всегда ли mysql 5.7 выполняет индекс типа объяснения, когда столбец индекса и что-то типа «как»? - PullRequest
0 голосов
/ 19 сентября 2018

the explain result when using like with wildcard

на вопрос для интервью: "когда индекс mysql не используется?"кто-то говорит: «когда в% используется«% », а«% »- первый символ.»

, тогда я проверяю sql и удивляюсь ...

означает ли он 1.в некоторых подобных случаях mysql не использует индекс для поиска

или

2.после встречи "% abc" или "% abc%", все еще использующего индекс, но перейдет на полное сканирование индекса,тогда индекс теряет эффект ???

1 Ответ

0 голосов
/ 21 сентября 2018

Это потому, что MySQL не может индексировать все возможные подстроки.Он может работать только с abc% запросами префиксного типа, так как индексы упорядочены, поэтому иногда LIKE запрос может быть оптимизирован с помощью индекса.

Проблема с MySQL EXPLAINон довольно слабый по сравнению с другими платформами RDBMS и делает много догадок, а порой и диких предположений.

Postgres, для сравнения, даст вам представление о том, как выполнялся фактический запрос, с учетом фактическогоценности.MySQL имеет тенденцию представлять свои лучшие предположения относительно того, что произойдет, и фактический результат может быть совершенно другим.

...