Вниз
Скачать: CL | DM;

Медленно работает метод TIBTable.Locate   Найти похожие ветки 

← →
XanderMan ©   (2002-04-10 20:38) [0]

На машине работает FireBird. Имеется таблица, в ней порядка 6500 записей. В программе, написанной под D6, необходимо часто производить поиск записи по индексированному полю и делать ее текущей. В TTable есть метод FindKey, который работает достаточно быстро. В TIBTable есть похожий метод Locate. Проблема в том, что он выполняется ну очень медленно (до 20 сек, и это при том, что поиск ведется по индексированному полю). Посмотрел в исходники Delphi. Реализация Locate какая-то невероятная: для поиска нужной записи он производит перебор всех записей таблицы, начиная с первой, пока не найдет нужную:( Простенько, но со вкусом...

Подскажите, пожалуйста, как ускорить процесс поиска в таблице с позиционированием на нужную запись.


← →
dymka ©   (2002-04-10 21:14) [1]

Высказываю просто мысли... Может они и не точны...
При открытии набора, клиент фетчит не все записи, а только те которые необходимо вывести на экран, поэтому Locate при проходе чтит с сервера дополнительно каждую запись...
Возможный метод решения - делать FetchAll после открытия...
Открытие будет идти дольше, поиск быстрее...
Хотя не уверен в правильности подхода...
Далее, после FetchAll можно получить размер и адрес каждой записи - т.е. можно искать самому, используя спец алгоритмы (QuickSort итп...).


← →
alexandr ©   (2002-04-11 07:43) [2]

не используй TIBTable


← →
koks ©   (2002-04-11 10:11) [3]

Конечно, при клиент-сервере использовать старую технологию (Lookup по индексированному полю) - будут тормоза. Судя по всему, мало того что она у тебя перебирает все записи - она их еще и гоняет туда-сюда... Клиент-сервер ориентирован на SQL. Соответственно используй его.. Будет работать в миллион раз быстрее..


← →
Fareader ©   (2002-04-11 11:15) [4]

Возьми IBQuery и делай локейт у него. правда подтормаживает тоже. Лучше возьми FibPlus он локейтит быстрее, да и если в запросе будет сортировка, то скорость поиска будет ниже, я от этого избавился сделав сортировку через метод DoSortEx - поиск идет очень быстро.

А кто нибудь знает что происходит с www.ibase.ru ?


← →
alexandr ©   (2002-04-11 11:18) [5]

а что с ним происходит?


← →
Fareader ©   (2002-04-11 11:39) [6]

сайт не открывается а пытается сохранить какой-то файл на винт - сохранил, посмотрел - набор байтов :(


← →
alexandr ©   (2002-04-11 12:03) [7]

у меня только-что открылся
а ib.demo.ru ? Это ведь зеркало



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.007 c
1-2525
Коля
2002-04-17 02:26
2002.05.02
GetDir???


1-2617
Афоня
2002-04-18 13:31
2002.05.02
Как создать калькулятор


7-2689
Borisb69
2002-02-06 11:22
2002.05.02
Как расшарить диск


14-2648
Scald
2002-03-25 13:28
2002.05.02
IP


4-2717
Demn
2002-02-28 09:22
2002.05.02
ListView




   Наверх