![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск и скорость поиска [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-полям всегда идет полный перебор.
В-третьих, часть записе может быть при переборе отсеяна сразу за счет длины искомого слова, например.
В-четвертых, помним о кэшировании данных.