2016-09-16 3 views
0

Ma requête contient LIKE "%BLABLA". Va-t-il optimiser ma requête si j'ajoute un index? Si oui, est-ce que l'indexation B + Tree en cluster et non clusterisée améliorera ma requête?Indexation d'un caractère générique étrange sur SQL

Merci!

+0

Marquez les dbms que vous utilisez. Ceci est une question spécifique au produit! – jarlh

+1

Je ne pense pas qu'un filtre 'LIKE' sera capable d'utiliser tout ce qui vient après le caractère générique pendant la traversée de l'arbre. Donc, je ne pense pas qu'un index aiderait dans cette requête particulière. –

+0

@TimBiegeleisen mais ici: http: //stackoverflow.com/questions/543580/equals-vs-like/39531185#39531185 ils disent qu'il est possible pour toute autre expression LIKE – Codevan

Répondre

1

LIKE 'abc' est très similaire à = 'abc';
LIKE 'abc%' est une "plage", qui est susceptible de nous être un indice;
LIKE '%abc' ne peut pas utiliser un index - en raison du caractère générique principal.

Si vous souhaitez discuter de ce qui pourrait être fait pour votre requête, veuillez fournir l'ensemble de la requête, plus SHOW CREATE TABLE.

1

Vous pouvez stocker les données inversées dans un autre champ, ajouter un index sur ce champ inversé et interroger ce champ inversé. Au lieu d'utiliser LIKE '%abc' vous utiliserez LIKE 'cba%', en utilisant le champ inversé.