Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Быстрый поиск в БД [D6, Paradox]


Страницы:   1 2

Suharew ©   (2005-05-15 16:25:00) 

Есть БД Paradox около 1000000 записей. Использую SQL для работы с ней. Когда ищу запись с помошью Locate, он ее находит слишком медленно, ну где-то секунд за 6-7, Подскажите быстрее никак нельзя.


Anatoly Podgoretsky   (2005-05-17 23:51:00) [21]

Зачем тебе миллион записей?


sniknik   (2005-05-17 23:50:00) [22]

конечно можно.
выбирать нужно только нужное не весь лимон, а 100/200 записей, и быстро и юзеру ненапряжно их просмотреть.

или открыть таблицей (время открытия минимально), а не запросом (смысла в нем? весь выбирается), таблица то у тебя локального типа, не sql сервер.


suharew   (2005-05-17 23:38:00) [23]

Спасибо всем за ответы. Ищет все быстро. Оказалось дело в другом.
Посмотрите код

query1.close;
query1.sql.clear;
query1.sql.add('select * from telefon.db order by tel');
query1.open;

query1.locate('tel',trim(t),[loPartialKey]);


Оказывается открывает он долго эту базу с миллионом записей.
Прошу прощения за мой недочет.

Теперь вопрос по другому стоит как базу быстрее открыть?
Возможно ли такое.???


Sergey13   (2005-05-16 17:17:00) [24]

2[14] Виталий Панасенко   (16.05.05 17:13)
Осталось выяснить у автора, что у него за поиск и стОит ли для него делать индексы по всем полям поиска. 8-)


Виталий Панасенко   (2005-05-16 17:13:00) [25]

Индекс должен быть АКТИВНЫМ по тем полям по которым ищем...В моем тесте, если искать по двум полям, Ф1 и Ф2, но активный индекс для второго поля, поиск около 14 сек !!! если же индекс тот, что нужен - "мухой"


Виталий Панасенко   (2005-05-16 17:06:00) [26]

Значение в 829473 записи Locate по индексированному (второму) полю - менее секунды, но медленнее FindKey (видно "на глаз")


Sergey13   (2005-05-16 16:41:00) [27]

2 [11] Anatoly Podgoretsky ©   (16.05.05 16:35)
Ну и выдет наверное на те-же 6 секунд. 8-)


Anatoly Podgoretsky   (2005-05-16 16:35:00) [28]

А не по ключу последовательным перебором


Sergey13   (2005-05-16 16:14:00) [29]

2 [9] Виталий Панасенко   (16.05.05 16:07)
А непо ключу?


Виталий Панасенко   (2005-05-16 16:07:00) [30]

Загнал в таблицу из двух полей 1000000 записей - ищет мгновенно по ключу...


Anatoly Podgoretsky   (2005-05-16 15:35:00) [31]

Я тоже не согласен, это время нормальное на открытие, но не на поиск. Но время это ерунда по сравнению с травмой психики пользователя.


Виталий Панасенко   (2005-05-16 15:25:00) [32]


> Sergey13 ©   (16.05.05 12:15) [6]
> 2Suharew   (15.05.05 16:25)
> > он ее находит слишком медленно, ну где-то секунд за 6-7
> Вполне приемлемый результат для лимона записей, ИМХО.

Не согласен...


Sergey13   (2005-05-16 12:15:00) [33]

2Suharew   (15.05.05 16:25)
> он ее находит слишком медленно, ну где-то секунд за 6-7
Вполне приемлемый результат для лимона записей, ИМХО.


Alex_Bredin   (2005-05-16 12:08:00) [34]

Построить индекс и использовать FindKey


msguns   (2005-05-16 11:27:00) [35]

В любом случае отображаемыйНД из миллиона записей - это извращение.


Виталий Панасенко   (2005-05-16 10:33:00) [36]

Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.


Anatoly Podgoretsky   (2005-05-15 20:34:00) [37]

А больше записей не нашлось?


Desdechado   (2005-05-15 17:47:00) [38]

Locate к SQL отношения не имеет в принципе.
Делай через SQL маденькие выборки, в которых можно что-то "доискивать" Locate'м. Или же сразу делай выборку так, чтоб условие поиска попадало в WHERE-кусок SQL-запроса.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо