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

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

Скорость TIBQuery.Locate [D6, IB6.x]


Igor_ ©   (2002-10-02 11:47:00) 

В DBGrid выводится такой запрос - данные из трех таблиц
orders имеет forgein key на clients и order_status

Select o.*,c.ORG_NAME,c.CLIENT_NAME ,s.*
from orders o,clients c,order_status s
where o.client_id=c.id and o.status=s.id


когда делаешь Locate по какому-либо полю это происходит очень
медленно, даже при небольшой выборке (записей 20).
Как можно ускорить работу Locate?


ЮЮ   (2002-10-02 13:11:00) [1]

Или в обработчиках onBeforeScroll, onAfterScroll. Или в DB-aware компонентах, связанных с запросом. Обрубай всё перед Locate, а затем подключай.


alexandr   (2002-10-02 12:40:00) [2]

дело может быть в вычисляемых полях у TIBQuery


VAleksey   (2002-10-02 12:34:00) [3]

Если честно, то я никогда не сталкивался с такой медлительностью локейт-а. Может быть дело не в нем ?


Prooksius   (2002-10-02 12:08:00) [4]

Дело в том, что Locate работает в памяти с DataSet.
Тут все зависит от того, какими компонентами пользуешься.
Например, FIBplus работают так:
Если locate находит строку в уже отфетченной части DataSet, то просто позиционируется на нее, если эта строка еще не отфетчена, то фетчится до искомой строчки и позиционируется на нее.
Насколько я знаю, остальные компоненты так не работают. Locate сначата делает FetchAll, а потом, собственно, саму себя.
Но у тебя 20 строчек... Может быть, ты фетчишь какие-то большие поля или их очень много... Хотя, и это не должно влиять.

У меня на FIBPlus все идеально. Попробуй их.


Наверх

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