Главная страница
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.021 c
1-11927
JorSand
2003-12-16 22:24
2004.01.05
MDI Project, DLL и в НЕЙ модальную форму.


3-11782
T
2003-12-09 17:24
2004.01.05
Как выделить месяц в запросе?


3-11811
Query
2003-12-07 17:52
2004.01.05
Как в DBGride или Table сделать только одно редактируемое поле


1-11966
Андрей_Р
2003-12-19 14:14
2004.01.05
отловить нажатие на созданный компонент....


3-11832
KIR
2003-12-05 17:56
2004.01.05
Запомнить позицию в НД перед обновлением