Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
ВнизТормозит 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c