Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

InterBase [D6, IB6.x]


Страницы:   1 2 3

Ru ©   (2003-10-09 17:53:00) 

1. Как узнать количество записей в таблице базы (RecordCount стабильно выдает 1)


sts   (2003-10-10 13:19:00) [21]

Анонимщик © (10.10.03 12:59) [35]

Этого не делать ни в коем случае (впустую потраченное время).

Alexandr © (10.10.03 12:54) [32]

В сегменте отката они хранятся. С версиями там все хорошо.

ИМХО в IB можно пользоваться Count(*) хотя бы потому, что там сложный запрос не написать (во всяком случае без ХП) и они в основном простые. В Fib+ есть возможность делать это автоматически.

Ru © (09.10.03 17:53)

Кроме корректного отображения ScrollBar и прогресса обработки записей трудно представить для чего это может понадобиться.
ИМХО это дурь лишние запросы кидать на сервер.


Johnmen   (2003-10-10 13:13:00) [22]

>Danilka © (10.10.03 12:50)

Оракл - блокировочник.

>Alexandr © (10.10.03 12:54)

Не совсем версии, а т.н. блоки отката и сегменты отката. Их данные помещаются в журнальный буфер, который можно сбрасывать на диск. Поэтому и появляется возможность "откатить" подтвержденные транзакции...
Вобщем присутствуют лишь некоторые признаки версионника :)


Alexandr   (2003-10-10 13:05:00) [23]

1) вот именно на триггере и можно сделать в особых случаях.
2) count по полной таблице не имеет большого смысла. Ибо главное - count по выборке. А тут уже на триггере не реализовать.
3) mssql например count вычисляет по индексу, ибо блокировочник.
interbase так не может, зато он может многое другое.


Анонимщик   (2003-10-10 12:59:00) [24]

Вообще-то я распоясался, Данилка, извини.
Насчет Оракла вообще ничего не знаю.
Насколько я понял из объяснений разработчиков FireBird"а, а они долго и упорно рассказывали о том, что никогда не будут делать ускорения count(*) (хотя, по моему, неправильному, возможно, мнению, во многих случаях это можно было бы им и сделать), этого самого ускорения не будет.
А автору вопроса могу предложить вариант: сделать триггер на внесение и удаление записей в таблицу, в котором изменять на единицу значение количества записей, и хранить это значение в отдельной таблице.
Предполагаю, также, что с этим возможны особенности, но описать их не берусь. Но в простейших случаях будет работать.


Ru   (2003-10-10 12:57:00) [25]

>Alexandr © (10.10.03 12:56) [33]

но у меня сложилось впечатление, что вы знаете InterBase лучше меня


Alexandr   (2003-10-10 12:56:00) [26]

2Ru © (10.10.03 12:51) [31]
спасибо за подробный ответ.


Alexandr   (2003-10-10 12:54:00) [27]

Danilka ©
там версии пишутся в отдельном журнале каком-то который может переполниться.
примерно так.


Ru   (2003-10-10 12:51:00) [28]

>Alexandr © (10.10.03 12:26) [23]
>слушай, ты такой крутой специалист по базам данных!

я пытаюсь научиться

>1) что такое Dbaware

если не ошибся в написании (кажется я этого не делал), то это всего-навсего набор компонентов ориентированных на работу с базами данных. Точнее на отображение информации хранящейся в базе (пример: DBGrid)

>2) как ты подключаешься к базе данных с помощью IBDatabase

щелкаем правой клавишей мыши на IBDatabase, выбираем пункт меню "Database Editor ..." в появившемся окне указываем путь к базе, имя пользователя, пароль доступа, кодировку базы.
Подключение происходит при установке свойства IBDatabase в положение true

>3) как ты выбираешь таблицу, к которой надо подлючится в IBDataset? я не нашел там такого свойства

в IBDataset в свойстве "DataBase" указываешь базу (IBDatabase).
Заполняешь "SelectSQL" (Select * from MyTBL)
Затем правым щелчком мыши вызываешь меню, в котором выбираешь пункт "Dataset Editor ..." - нажимаешь кномпу "Generate SQL" - для генерации запросов необходимых для работы с таблицей.

>4) IBDataSet1.Next загружает следующую таблицу из базы данных, да?

данная инструкция (теоретически) переводит указатель с текущей на следующую, тобто если мы находимся на первой записи, то после выполнения данной инструкции мы будем находится на второй.


Danilka   (2003-10-10 12:50:00) [29]

[26] Alexandr © (10.10.03 12:41)
Серьезно? Надо будет уточнить, всегда считал его версионником, да и на sql.ru про него говорили что он версионник.
А какие у него ограничения? Что-то я не заметил там никаких ограничений наоборот.


Alexandr   (2003-10-10 12:47:00) [30]

а если после count все равно надо fetchAll делать, то есть ли смысл в count?


NickBat   (2003-10-10 12:45:00) [31]

Из-за чего весь сыр-бор то?

Практически всегда для серверной БД count будет быстрее FetchAll


Анонимщик   (2003-10-10 12:42:00) [32]

Danilka
Съел?


Alexandr   (2003-10-10 12:41:00) [33]

оракл не версионник.
Он эмулирует версионник, что хорошо видно по ограничениям


Danilka   (2003-10-10 12:36:00) [34]

[24] Анонимщик © (10.10.03 12:34)
а по чему тогда в орокле с count(*) все хорошо? я имею ввиду то, что он тоже версионник.


Анонимщик   (2003-10-10 12:34:00) [35]

На пустом месте дискуссия.
А вообще-то для интербейза, из-за версионности, и count(*) плохо, но лучше, конечно, навигации.


Alexandr   (2003-10-10 12:26:00) [36]

2Ru
слушай, ты такой крутой специалист по базам данных!
скажи мне только:
1) что такое Dbaware
2) как ты подключаешься к базе данных с помощью IBDatabase
3) как ты выбираешь таблицу, к которой надо подлючится в IBDataset? я не нашел там такого свойства
4) IBDataSet1.Next загружает следующую таблицу из базы данных, да?
если у тебя нет времени, чтоб написать ответы здесь, может подумаешь, сколько бы ты взял денег за пару консультаций по базам данных? У меня нет много денег, но думаю на несколько сотен у.е. сможем договориться.


sniknik   (2003-10-10 11:57:00) [37]

Жук © (10.10.03 11:45) [21]
см. конкретный случай, в Anatoly Podgoretsky © [11] описано.

в абсолютном большинстве выборок передача данных гораздо дольше расчета, это если очень сложный запрос а выборке насколько значений то да.
в первом случае 2 запроса лутше во втором 1 с фетчем. а делать предпочтение только одному способу всегда это ...

Ru © (10.10.03 11:41) [20]
> Делаю IBDataSet1.Next; - в результате ничего не происходит.

посмотри может это виртуальный метод.
(и не спрашивай меня по IB, я с ним почти не работал, а с IBX вооще (только 1 раз. стах по IBX 1день :о)) ну чего я могу сказать?)


Жук   (2003-10-10 11:45:00) [38]


> Anatoly Podgoretsky © (10.10.03 11:35) [18]
> И вот теперь представь, получение Count по такой выборке

Про это и говорю. Получаем вместо одного запроса - два !
Нет кж. Уж лучше отфетчить и всё...


Ru   (2003-10-10 11:41:00) [39]

>sniknik © (10.10.03 11:21) [15]

пока у меня локальная база.
делаю так:
IBDataBase - для подключения к базе
IBTransaction - говорят надо
IBDataSet - для подключения к конкретной таблице базы
Делаю IBDataSet1.Next; - в результате ничего не происходит.
Я не использую стандартные компоненты для работы с базами (DBAware).


Sergey13   (2003-10-10 11:38:00) [40]

2Жук © (10.10.03 11:24) [16]
>Предсталяю, что мне скажет главбух, когда после составления
Может его успокоит тот факт, что он получит сообщение ДОсоставления. Тогда он поймет что до конца рабочего дня он не успеет все это дело распечатать. 8-)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо