Задать вопрос
@lexstile

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

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

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

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

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

Похожие вопросы