@lexstile

Оптимизация поиска по БД?

Есть таблица со словами и словосочетаниями.
Есть потребность поиска таких слов либо по первой букве, либо по двум первым буквам (их вводит пользователь).
Вопрос: все оставить как есть и использовать оператор LIKE или добавить еще одно/два поля в таблицу и принудительно (один раз пройтись по всей таблице) занести в нее 1-2 первые буквы слова/словосочетания и искать уже по новосозданным полям без использования оператора LIKE?
Возможно, есть предложения и другие, готов выслушать.
Акцент, конечно, хочется сделать на производительность.
Заранее благодарен за ответы.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Зависит от количества записей в таблице. В любом случае ваш вариант будет работать шустрее, чем LIKE: делаете два столбца (по одной букве и по двум буквам), пишите в них числовые значения (переводите буквы, например, в коды символов), делаете два индекса по этим столбцам и при построении запроса в условии также используете числа (поиск по числам происходит быстрее, чем по символам).
Ответ написан
@remzalp
Программер чего попало на чем попало
В своё время неплохо ускорил процесс поиска Sphinx, у него другая организация индекса, поэтому скорость резко отличается. Если на сервере мощности достаточно, то можно попробовать.

ну и базовая оптимизация - LIKE "%...%"работает в разы медленнее, чем LIKE "...%"
Вы мало сказали про состав типичной строки в БД и по какой её части планируете искать.

Если что, то запрос "explain select ...." полезная штука
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы