Bonjour,
J'ai une table dédiée à la recherche littérale.
Sa structure est : clé primaire (constituée de plusieurs colonnes), et une colonne "TEXTE" varchar2(4000)
Il y a un index CTXCAT sur la colonne "TEXTE".
La table fait quelques centaines de milliers de lignes.
Si on effectue ces requêtes :
select * from matable where catsearch(texte, 'cha', '')
=> On a moins d'une dizaine de lignes retournées au bout de 2 secondes.
select * from matable where catsearch(texte, 'cha*', '')
=> On a une vingtaine de résultats au bout de 2 minutes
select * from matable where texte like '%cha%'
=> On a une cinquantaine de lignes au bout de moins d'une seconde
Comment est-ce possible que le LIKE soit à se point plus rapide ?
Mise à part le résultat légèrement différent, j'ai toujours cru que l'avantage principal d'un index littéral était d'aller plus vite qu'un LIKE qui ne peut pas utiliser les index...
On a essayé un rebuild index : ça a effectivement gagné un peu, mais rien d'extraordinaire...
Comment optimiser cet index ? Si le like dure moins d'une seconde, le ctxcat devrait aussi durer moins d'une seconde non ?
Partager