Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-2467
Limonad
2002-04-11 08:53
2002.05.02
Как удалить сразу несколько записей в базе данных?


1-2540
Nicolas_
2002-04-18 11:16
2002.05.02
Поток -> DLL -> модальная форма. Как закрыть ее?


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


1-2626
Molotov
2002-04-20 20:14
2002.05.02
Корректная работа с файлами


1-2564
alm
2002-04-19 09:35
2002.05.02
Динамический массив исчезает...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский