Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск и скорость поиска [D5, Paradox]


AlexLines ©   (2007-03-02 15:53:00) 

Уважаемые знатоки. Есть БД Парадокс в ней 11 тыс. записей поле memo

Провожу поиск по полю memo

Query1.SQL.Add('SELECT * FROM My.db Where BodyMemo like "%А%"');

В том случае, если искать А или В или К и т.д. происходит отбор практически всех записей (11 тыс.). В том случае, если слово Александр допустим 500 записей.

В первом случае поиск происходит за 15 секунд, во втором менее 1 секунды.

В связи с этим не понятно, для того, чтобы отобрать 500 записей оператору, как я понимаю, необходимо просмотреть все. Почему же поиск занимает значительно меньшее время?

Если найдено 11 тыс. записей не понятно на что уходит целых 14 секунд?

Заранее благодарю


AlexLines   (2007-03-02 16:57:00) [1]

Спасибо, Сергей М.


Sergey13   (2007-03-02 16:55:00) [2]

> [15] AlexLines   (02.03.07 16:53)

Я догадывался, что там символы и имел в виду - по смыслу там что?


Сергей М.   (2007-03-02 16:54:00) [3]


> AlexLines


Переводи свой софт на любую сколь-либо серьезную SQL-серверную СУБД-платформу.
Там ты сможешь задействовать на серверной стороне пользовательские ф-ции, в которых можно до определенных пределов оптимизировать полнотекстный поиск.


AlexLines   (2007-03-02 16:53:00) [4]


> А что у тебя в этом поле?


Текст - приблизительно 1000 знаков


Сергей М.   (2007-03-02 16:51:00) [5]


> AlexLines   (02.03.07 16:48) [12]


Какие индексы по мемо-полю ?
Нет таких. И быть не может.


Sergey13   (2007-03-02 16:50:00) [6]

> AlexLines
А что у тебя в этом поле?


AlexLines   (2007-03-02 16:48:00) [7]

Если не сложно, можете подсказать литературу или какие-либо статьи по индексам, чтобы можно было хотя бы с чего-то начать?


Виталий Панасенко   (2007-03-02 16:44:00) [8]

использовать индексы. что, в твоем случае, невозможно...


AlexLines   (2007-03-02 16:43:00) [9]

Так вот прошу про фому поподробнее. Вообще так что ли сложно ответить, если вы конечно же знаете?


Сергей М.   (2007-03-02 16:38:00) [10]

Ему про фому говорят, а он все про ерему свое гнет)


AlexLines   (2007-03-02 16:35:00) [11]

Так вот я и хочу узнать хотя бы о подходах к организации такого поиска


Romkin   (2007-03-02 16:31:00) [12]

Полнотекстовый поиск - сам организуй данные так, чтобы поиск был быстрым


AlexLines   (2007-03-02 16:27:00) [13]

Ну и Плохиш. Варианты, какие есть по поиску в БД, чтобы не было торможения а?


Плохиш   (2007-03-02 16:20:00) [14]


> В первом случае поиск происходит за 15 секунд, во втором
> менее 1 секунды.
>
> В связи с этим не понятно, для того, чтобы отобрать 500
> записей оператору, как я понимаю, необходимо просмотреть
> все. Почему же поиск занимает значительно меньшее время?
>  
>
> Если найдено 11 тыс. записей не понятно на что уходит целых
> 14 секунд?

Они уходят на передачу тебе остальных 10500 записей...


AlexLines   (2007-03-02 16:15:00) [15]

Т.е. вариантов нет никаких? Какие подходы к организации поиска есть, если не использовать like "%A%"


Desdechado   (2007-03-02 16:11:00) [16]

like "%А%"ускорить нельзя, даже не для MEMO-полей


AlexLines   (2007-03-02 16:04:00) [17]

Понял, спасибо

А можно ли в этом случае ускорить поиск. Если да то какие пути возможны ...


Desdechado   (2007-03-02 15:57:00) [18]

Во-первых, это не поиск, а отбор (поиск - это позиционирование на записи, удовлетворяющей условию).
Во-вторых, по MEMO-полям всегда идет полный перебор.
В-третьих, часть записе может быть при переборе отсеяна сразу за счет длины искомого слова, например.
В-четвертых, помним о кэшировании данных.


Наверх

Титульная страница Поиск, карта сайта Написать письмо