Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
9-11757
Yanis
2003-06-07 11:39
2004.01.05
Хочу спросить про рисование на экране.


1-11945
Bokus
2003-12-20 01:12
2004.01.05
Симплекс метод (Базисный подход)


1-11950
mefisto
2003-12-17 17:41
2004.01.05
TMainmenu ?


6-12012
Vladimir Bolotin
2003-11-04 00:11
2004.01.05
СРОЧНО ищется КОМПОНЕНТ для работы с почтой по HTTP


14-12159
sad
2003-12-05 10:07
2004.01.05
Иероглиф светлой печали




   Наверх