Mysql
 sql >> Base de données >  >> RDS >> Mysql

Meilleur type d'indexation lorsqu'il y a une clause LIKE

Oui, ce que vous avez ici est un tueur de base de données

Un index B-tree peut être utilisé pour les comparaisons de colonnes dans les expressions qui utilisent les opérateurs =,>,>=, <, <=ou BETWEEN. L'index peut également être utilisé pour les comparaisons LIKE si l'argument de LIKE est une chaîne constante qui ne commence pas par un caractère générique.

Source :http://dev.mysql.com /doc/refman/5.7/fr/index-btree-hash.html

Cela signifie donc que votre requête LIKE ne peut pas utiliser l'index et que vous avez alors deux likes connectés avec un OR. Si cela ne suffit pas, vous avez également ajouté une comparaison NOT IN.

Mais heureusement, la deuxième expression LIKE n'est pas si mauvaise, elle ne commence pas par un joker. Votre meilleur espoir est donc de créer un index composite sur usage_guidance, name

Si vous pouviez publier votre SHOW CREATE TABLE et quelques lignes d'exemples de données + la sortie attendue, nous pourrions avoir une idée s'il existe un moyen de réécrire cette requête.