![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тормозит Locate в FIBPlus [D5, IB6.x]
Fareader © (2002-01-29 11:16:00)Поставил я эту библиотеку. По сравнению с IBX конечно быстрее. Но вот только локейт медлено идет, попробюовал через фильтр - быстрее. Можно ли локейт ускорить?
Fareader (2002-01-29 12:49:00) [1]1) дописывать в where - нецелесообразно, потому что нужна вся выборка, а при необходимости переход на нужный ярлык.
2)fetchall - помог - спасибо.
3) detail -нет
4)локейт идет после ввода всего номера
5)поиск идет по integer
6) запрос отрабатывается быстро
Спасибо за помощь!
А есть идеи по поводу Datase.AllowedUpdateKinds свойство AutoCalcFields
Чего это такое было?
Alexandr (2002-01-29 12:34:00) [2]1) ну можно в where дописать еще условие по nak.num_yar и каждый раз при поиске ярлыка переоткрывать запрос.
2) А после открытия FetchAll делаешь? Тогда все записи будут на клиенте и с сервера ничего тянуться при locate не будет
3) А detail у этого master нет?
4) Можно поставить таймер на locate, чтобы locate не вызывался пока пользователь не введет полностью номер ярлыка - будет только один locate вместо нескольких.
5) А какие типы полей у этого запроса? Может запрос, по которому идет поиск упростить, а остальные поля вывести в detail
6) А сам запрос сколько выполняется? А его FetchAll? А какой план запроса?
Fareader (2002-01-29 12:16:00) [3]кажется нашел грабли по второй части вопроса (нарушение сортировки) в Datase.AllowedUpdateKinds в свойстве AutoCalcFields поставил false и записи не прыгают. А локейт значит дохлое дело?
Fareader (2002-01-29 12:05:00) [4]Есть выборка:
select nak.num_nak, nak.kod_pl, nak.kod_gr, nak.num_yar, nak.date_smena, nak.date_in, nak.date_out,
nak.vozvrat, nak.state_nak, nak.all_sht, nak.cls_smen, nak.cls_month, nak.num_nak_u,
yar.graf, yar.ezd, yar.drive_y, yar.id, yar.kod_cx,
yar.date_print as yar_print
from (nak left join yar on nak.num_yar=yar.id)
where
(nak.state_nak between -1 and 3 and nak.state_nak<>0)
or (nak.B_Smena_F= :b_period and nak.E_Smena_F= :e_period)
order by nak.num_yar, nak.num_nak
туда уходит до 100 записей, а юзеру надо найти конкретный ярлык
(nak.num_yar), а как его найти как не через локейт. И еще: изменяю nak.state_nak, переоткрываю Dataset и эта запись уходит ниже, хотя по order by nak.num_yar, nak.num_nak она не должна никуда двигаться ???
Alexandr (2002-01-29 11:57:00) [5]и это быстрее чем Locate????
А зачем тебе это? Это для интерфейса программы (ну типа это поиск для юзера) или для чего?
Fareader (2002-01-29 11:52:00) [6]Через такой
Accept := DataSet["num_yar"]=strtoint(Out_Yar.edit1.text);
Alexandr (2002-01-29 11:51:00) [7]люди!
1)он с FIBPlus работает
2) Иногда все-таки нужно использовать именно Locate, а не через Select
Desdechado (2002-01-29 11:42:00) [8]2 Praco
Не путай человека, он без БДЕ работает.
А вот использовать FIBQuery и ограничить выборку в SELECT явно быстрее, чем шарить по таблице Locate"ом
Praco (2002-01-29 11:31:00) [9]Locate предварительно делает FetchAll для загрузки всей выборки в локальный кэш. Ускорить его нельзя. Можно ограничить объем выборки Select"а.
Если использовал локальный фильтр - то он тоже делает FetchAll - ускорения не будет.
Подробности http://ib.demo.ru/devinfo/bde.htm.
Alexandr (2002-01-29 11:24:00) [10]через какой еще фильтр ты пробовал?