sql >> Base de Datos >  >> RDS >> Mysql

Mejor tipo de indexación cuando hay una cláusula LIKE

Sí, lo que tienes aquí es un asesino de bases de datos

Se puede usar un índice de árbol B para comparaciones de columnas en expresiones que usan los operadores =,>,>=, <, <=o BETWEEN. El índice también se puede usar para comparaciones LIKE si el argumento LIKE es una cadena constante que no comienza con un carácter comodín.

Fuente:http://dev.mysql.com /doc/refman/5.7/es/index-btree-hash.html

Eso significa que su consulta LIKE no puede usar el índice y luego tiene dos Me gusta conectados con un OR. Si eso no es suficiente, también ha incluido una comparación NO DENTRO.

Pero afortunadamente, la segunda expresión LIKE no es tan mala, no comienza con un comodín. Entonces, su mejor esperanza es crear un índice compuesto en usage_guidance, name

Si pudiera publicar su SHOW CREATE TABLE y algunas líneas de datos de muestra + el resultado esperado, podríamos tener una idea de si hay una forma de reescribir esta consulta.