log-запросы-не-использование-индексы и LIKE в MySQL - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть эта "log-query-not-using-indexes", включенная в MySQL.У меня есть один запрос, который регистрируется MySQL как таковой, то есть запрос, который не использует индексы.Дело в том, что этот запрос использует LIKE, например,

category like '%fashion%'

, и если я удаляю LIKE или меняю его на

category = 'fashion'

, то он говорит, что использует индексы.Поэтому, когда мы используем LIKE в нашем запросе, MySQL зарегистрирует его как не использующий индексы, несмотря ни на что?

Спасибо

1 Ответ

2 голосов
/ 09 февраля 2011

Использование предложения типа %fashion% никогда не будет использовать обычный индекс. Вам нужен полнотекстовый индекс, если вы хотите выполнить такой поиск.

Помните, что varchar индексирует первую часть строки. Итак, если вы ищете вхождение fashion на любой части строки, то index не предложит никакой помощи для повышения производительности, так как вам нужно будет искать каждую строку.

Однако, если вы ищете только первую часть, как это:

select * from table where field like 'fashion%'

Тогда индекс может быть использован и может быть полезным.

...