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