EnterSandman
@EnterSandman
Эникей

Можно ли и нужно ли делать индекс на varchar?

Всем драсть.
Имею табличку с несколькими полями. есть индексы на полях с типом INT - всё быстро ищется при точном запросе
есть поле с типом varchar и неуникальными данными. строк несколько десятков миллионов и возникла необходимость поиска like %...% - можно ли как-то ускорить такой поиск и как это сделать?
  • Вопрос задан
  • 1264 просмотра
Пригласить эксперта
Ответы на вопрос 3
@entermix
Поиск по индексу в MYSQL работает только так: LIKE ...%
www.mysql.ru/docs/man/MySQL_indexes.html
Ответ написан
Комментировать
Settler1
@Settler1
Правильно написанный вопрос - половина ответа
От худшего к лучшему:
1) innodb + like + index (однако учтите что '%..%' индекс не используется, а так - '...%' – используется)
2) меняйте на myisam + full text search index
3) если нужно что то вроде поиска по сайту, то sphinx
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
Если у вас там myisam и латиница, то у вас есть full-text index.
В противном случае только сторонее решение типа sphinx

like %..% очень тяжелая операция и не может использовать обычные индексы (типа b-tree).
Ответ написан
Ваш ответ на вопрос

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

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