Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-11848
Xtz
2003-12-20 17:17
2004.01.05
Как узнать реальный размер компанента (для записи в файл)


1-11940
Cerber
2003-12-20 13:55
2004.01.05
Как из Memo перенести все данные в массив. Тоесть каждый символ в


1-11879
Soi
2003-12-15 07:04
2004.01.05
Дробные числа


14-12079
Knight
2003-12-07 20:20
2004.01.05
Заменят ли когда нибудь пункт


1-11896
TUser
2003-12-18 12:54
2004.01.05
extract





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский