![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
InterBase Query [D5, D6, D7, IB5.x]
DENpro © (2004-04-14 09:35:00)Почему при выполнении запроса компонентом Query или IBQuery, запрос выполняется в несколько раз дольше чем в WISQL, независимо от того делаешь ли Prepare перед выполнением или нет.
(К примеру в WISQL или IBExpert запрос выпоняется 4 секунды, при работе в программе он же выполняется примерно 40 секунд)?
Можно ли увеличить скорость выполнения запроса?
Соловьев (2004-04-14 14:11:00) [1]http://ibase.ru/ib6.htm
DENpro (2004-04-14 12:05:00) [2]Как я тестил время выполнения в проге.
Перед Open выводил время в Edit1 и сразу после в Edit2.
Соловьев>> Что за патч?
Соловьев (2004-04-14 11:46:00) [3]IBX? - может патч поставить?
Если не ошибаюсь - IBExpert и WISQL используют напрямую IB API. Из-за этого они быстрее и работают
Vlad (2004-04-14 10:24:00) [4]
> для IBExpert это еще +2 с., что бы сделать FetchAll.
Сорри, я вот это не заметил.
Тогда действительно, в программе зашит тормоз !
Sergey13 (2004-04-14 10:22:00) [5]2Vlad © (14.04.04 10:19) [8]
Так запрос везде неоптимизирован и в делфе и в эксперте. Фетч локально на его тачке 3000 записей - секунды. Где то в проге, ИМХО, тормоз зашит, просто не явно.
Vlad (2004-04-14 10:19:00) [6]Может и обработчики мешают, AfterScroll или AfterOpen, а может и просто запрос неоптимизированный, тогда именно такая картина и будет.
Sergey13 (2004-04-14 10:11:00) [7]2DENpro © (14.04.04 09:35)
А никакие обработчики не мешают? Типа афтерскролов, лукапов, калкфилдов? Что то уж шибко результаты отличаются. Неплохо бы промониторить твою прогу. Иногда такие вещи вылезают - волосы на голове шевелятся (из личного опыта 8-).
Vlad (2004-04-14 10:05:00) [8]
> DENpro © (14.04.04 09:48) [3]
А чтобы узнать количество записей, возвращаемых запросом (если база локальная) - select count(*) в отдельном запросе, и не нужно мучать компьютер с фетчем всего набора данных.
Vlad (2004-04-14 10:03:00) [9]
> DENpro © (14.04.04 09:52) [4]
> ). но факт остается фактом IBExpert делает его на много
> быстрее.
Что значит быстрее ?
Ты попробуй в том же эксперте запустить свой запрос, и после выполнения нажать кнопку Last в навигаторе. Что по времени будет ?
DENpro (2004-04-14 09:52:00) [10]Дело в том что у меня машина P4 2.6G/512, база локальная и я не понимаю почему так тормозит запрос(хотя он довольно сложный). но факт остается фактом IBExpert делает его на много быстрее.
DENpro (2004-04-14 09:48:00) [11]Запрос выдает примерно 3000 записей для IBExpert это еще +2 с., что бы сделать FetchAll.
Да я делаю Last, я бы с удовольствием его не делал, но мне необходимо знать количество записей возвращенных запросом, а без Last Query этого не знает.
Vlad (2004-04-14 09:43:00) [12]
> DENpro © (14.04.04 09:35)
IBExpert не фетчит все записи сразу, а только по мере необходимости.
А ты в программе, скорее всего либо FetchAll делаешь либо Last либо еще что-то заставляющее вытащить полный набор данных на клиента.
Johnmen (2004-04-14 09:41:00) [13]Такого не может быть !