Mysql
 sql >> Database >  >> RDS >> Mysql

Il miglior tipo di indicizzazione quando è presente la clausola LIKE

Sì, quello che hai qui è un killer di database

Un indice B-tree può essere utilizzato per confronti di colonne in espressioni che utilizzano gli operatori =,>,>=, <, <=o BETWEEN. L'indice può essere utilizzato anche per i confronti LIKE se l'argomento di LIKE è una stringa costante che non inizia con un carattere jolly.

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

Ciò significa che la tua query LIKE non può utilizzare l'indice e quindi hai due Mi piace collegati a un OR. Se ciò non bastasse, hai lanciato anche un confronto NOT IN.

Ma fortunatamente, la seconda espressione LIKE non è così male, non inizia con un carattere jolly. Quindi la tua migliore speranza è creare un indice composito su usage_guidance, name

Se potessi pubblicare il tuo SHOW CREATE TABLE e alcune righe di dati di esempio + l'output previsto, potremmo avere un'idea se esiste un modo per riscrivere questa query.