Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.21;
Скачать: CL | DM;

Вниз

Тормозит Locate в FIBPlus   Найти похожие ветки 

 
Fareader ©   (2002-01-29 11:16) [0]

Поставил я эту библиотеку. По сравнению с IBX конечно быстрее. Но вот только локейт медлено идет, попробюовал через фильтр - быстрее. Можно ли локейт ускорить?


 
Alexandr ©   (2002-01-29 11:24) [1]

через какой еще фильтр ты пробовал?


 
Praco ©   (2002-01-29 11:31) [2]

Locate предварительно делает FetchAll для загрузки всей выборки в локальный кэш. Ускорить его нельзя. Можно ограничить объем выборки Select"а.
Если использовал локальный фильтр - то он тоже делает FetchAll - ускорения не будет.
Подробности http://ib.demo.ru/devinfo/bde.htm.


 
Desdechado ©   (2002-01-29 11:42) [3]

2 Praco
Не путай человека, он без БДЕ работает.

А вот использовать FIBQuery и ограничить выборку в SELECT явно быстрее, чем шарить по таблице Locate"ом


 
Alexandr ©   (2002-01-29 11:51) [4]

люди!
1)он с FIBPlus работает
2) Иногда все-таки нужно использовать именно Locate, а не через Select


 
Fareader ©   (2002-01-29 11:52) [5]

Через такой

Accept := DataSet["num_yar"]=strtoint(Out_Yar.edit1.text);



 
Alexandr ©   (2002-01-29 11:57) [6]

и это быстрее чем Locate????
А зачем тебе это? Это для интерфейса программы (ну типа это поиск для юзера) или для чего?


 
Fareader ©   (2002-01-29 12:05) [7]

Есть выборка:

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 она не должна никуда двигаться ???



 
Fareader ©   (2002-01-29 12:16) [8]

кажется нашел грабли по второй части вопроса (нарушение сортировки) в Datase.AllowedUpdateKinds в свойстве AutoCalcFields поставил false и записи не прыгают. А локейт значит дохлое дело?


 
Alexandr ©   (2002-01-29 12:34) [9]

1) ну можно в where дописать еще условие по nak.num_yar и каждый раз при поиске ярлыка переоткрывать запрос.
2) А после открытия FetchAll делаешь? Тогда все записи будут на клиенте и с сервера ничего тянуться при locate не будет
3) А detail у этого master нет?
4) Можно поставить таймер на locate, чтобы locate не вызывался пока пользователь не введет полностью номер ярлыка - будет только один locate вместо нескольких.
5) А какие типы полей у этого запроса? Может запрос, по которому идет поиск упростить, а остальные поля вывести в detail
6) А сам запрос сколько выполняется? А его FetchAll? А какой план запроса?


 
Fareader ©   (2002-01-29 12:49) [10]

1) дописывать в where - нецелесообразно, потому что нужна вся выборка, а при необходимости переход на нужный ярлык.
2)fetchall - помог - спасибо.
3) detail -нет
4)локейт идет после ввода всего номера
5)поиск идет по integer
6) запрос отрабатывается быстро

Спасибо за помощь!

А есть идеи по поводу Datase.AllowedUpdateKinds свойство AutoCalcFields
Чего это такое было?



Страницы: 1 вся ветка

Текущий архив: 2002.02.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-66591
BJValentine
2002-01-29 17:02
2002.02.21
Path к запущенному EXE - шнику


1-66566
Demon[DZ]
2002-02-04 18:55
2002.02.21
Основная


3-66438
XX
2002-01-27 12:25
2002.02.21
Как сделать поиск по DBGRID?


3-66481
Fareader
2002-01-29 11:16
2002.02.21
Тормозит Locate в FIBPlus


14-66648
petr_v_a
2001-12-29 21:34
2002.02.21
а мы тут пьем .....