Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.02;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.015 c
1-2624
PaRL
2002-04-20 16:58
2002.05.02
ListBox


1-2519
Анастасия
2002-04-21 10:52
2002.05.02
hint ы в форме облаков


4-2713
Александр_
2002-02-27 19:12
2002.05.02
ScreenSaver. Активен или Нет?


7-2696
ATLANTIDO
2002-02-04 14:14
2002.05.02
ПРОДОЛЖАЕМ ОБЛАМЫВАТЬ WIN9X


3-2493
ruslan_as
2002-04-11 15:33
2002.05.02
DBLookupComboBox1