Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Melhor tipo de indexação quando há cláusula LIKE


Sim, o que você tem aqui é um assassino de banco de dados

Um índice de árvore B pode ser usado para comparações de colunas em expressões que usam os operadores =,>,>=, <, <=ou BETWEEN. O índice também pode ser usado para comparações LIKE se o argumento para LIKE for uma string constante que não inicia com um caractere curinga.

Fonte:http://dev.mysql.com /doc/refman/5.7/en/index-btree-hash.html

Isso significa que sua consulta LIKE não pode usar o índice e, em seguida, você tem duas curtidas conectadas a um OR. Se isso não for suficiente, você também lançou uma comparação NOT IN.

Mas felizmente, a segunda expressão LIKE não é tão ruim, não começa com um curinga. Portanto, sua melhor esperança é criar um índice composto em usage_guidance, name

Se você pudesse postar seu SHOW CREATE TABLE e algumas linhas de dados de amostra + a saída esperada, poderíamos ter uma ideia se existe uma maneira de reescrever essa consulta.