Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Поиск по индексированному полю.   Найти похожие ветки 

 
konst_bsh   (2003-12-08 17:52) [0]

Как уважаемые мастера ищут по индексированному полю? В локальных ДБ есть так называемый безусловный переход к записи- всякие там FindKey, GotoKey, FindNearest итд. А в SQL базах, неужели для поиска надо делать SQL запрос повторно с параметрами? Вот есть у меня Грид с 60 000 записей если пользовать locate, то он грузит все записи и получается неприемлемо долго. В общем я ищу способ поиска по индексу без загрузки всех записей в Грид.


 
Sandman25 ©   (2003-12-08 17:56) [1]

>Вот есть у меня Грид с 60 000 записей

Такого быть не должно. Надо ограничивать запрос.


 
konst_bsh   (2003-12-08 18:09) [2]

Ну так получается, что вы ищете при помощи locate?


 
Sandman25 ©   (2003-12-08 18:10) [3]

Когда в гриде до 100 записей locate выполняется мгновенно.


 
konst_bsh   (2003-12-08 18:20) [4]

Я не сомневаюсь. Но есть ли какие нибудь ещё способы поиска? Ну не считая lookup, который почти одно и тоже(без позиционирования на запись)


 
Zacho ©   (2003-12-08 18:42) [5]

В системах клиент-сервер на клиенте индексов нет, так что любой поиск записи в датасете сводится к перебору всех записей датасета.
Решение: учите SQL и не вытаскивайте на клиента 60 000 записей, не нужно это.


 
konst_bsh   (2003-12-08 18:48) [6]

Спасибо. Всё понял. Однако не всё так просто как хотелось бы :-)


 
Sandman25 ©   (2003-12-08 18:50) [7]

[6] konst_bsh (08.12.03 18:48)

Как крайнее средство борьбы с ленивыми пользователями, запускайте select count(*) по тому фильтру, который ввел пользователь. И если количество больше N (N << 60000), ругайтесь и требуйте ввести более строгий фильтр.


 
kaif ©   (2003-12-09 03:32) [8]

При переходе с локальных СУБД на SQL нужно полностью менять мышление. Компромисса здесь нет. Так же как с процедурного программирования на ООП. Зато потом жалеть не приходится.
Кстати, не нужно кручиниться о "необходимости делать запрос". Компонент TTable в отношении SQL-базы все равно делает запрос. Замедление Locate в при поиске связано не с медленностю Locate, а с медленностью Fetch. Когда открываешь таблицу еще не все записи на клиенте. Если сделать FetchAll (это долго) потом Locate работает быстро. Но делать Fetch 60 тыс записей нельзя. Неправильно это. Поэтому нужно учить SQL и менять кривизну мозга в новом направлении.



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.032 c
14-12038
Ihor Osov'yak
2003-12-10 23:33
2004.01.05
О покупке книг на http://shop.piter.com из Украины


14-12155
Alexander Vasjuk
2003-12-10 18:04
2004.01.05
Просмотр html содержимого без создания файла


4-12195
MaG
2003-11-04 20:08
2004.01.05
.............помощь в создании


7-12170
Vlad25
2003-10-26 13:10
2004.01.05
Как связать программу с определенным типом файлов?


3-11829
Slym
2003-12-08 08:43
2004.01.05
Какие транзакции поддерживает MS Access 2002(XP)?