Главная страница
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.022 c
14-12150
men
2003-12-12 15:30
2004.01.05
Gde knigy po linux vziat?


14-12118
Diablo
2003-12-13 20:11
2004.01.05
---|Ветка была без названия|---


1-11988
Никола
2003-12-19 10:11
2004.01.05
Знатоки, подскажите есть ли в DELPHI процедуры, которые


1-11979
k_len
2003-12-19 11:04
2004.01.05
Округление


14-12039
Ihor Osov'yak
2003-12-11 11:14
2004.01.05
Знатокам лицензионных правил Борланд