Вниз
Скачать: 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.009 c
14-2684
Alex_LG
2002-03-25 15:17
2002.05.02
Вопрос не по Дельфи а по С++ :0)


1-2597
BlackGrin
2002-04-19 19:59
2002.05.02
Gif & Delphi


4-2724
samos
2002-02-27 11:28
2002.05.02
Еще раз про реестр


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


14-2662
Злой
2002-03-27 09:05
2002.05.02
Приветствую!!! Не подскажите как осуществить такую идею (с media в дельфях ни когда не работал) Создаю список из mp3 файлов и нужно чтобы в Label отображалось общее время в списке файлов или отдельно выбранного файла. Так вот, загрузку Mp3 предположим в L




   Наверх