J'essaie d'optimiser une requête Oracle qui ressemble à ceci:Optimizing String-Recherche Oracle Interrogation
select * from upcTable where upc like '%567%'
La requête est rapide pour les petits termes de recherche tels que 567, mais il peut obtenir jusqu'à 15 chiffres dans lequel il peut prendre ~ 1,5 secondes. Y a-t-il un moyen d'accélérer cela? le nombre de termes si peu près le même, mais le premier exemple est un peu plus rapide
J'ai essayé de faire quelque chose comme
select * from
(select * from rldb.productmaster where upc like '%567%')
where upc like '%380%'
select * from rldb.productmaster where upc like '%567380%'
Dans ce cas,. Cependant en utilisant la même technique pour 15 chiffres, c'est un peu plus rapide mais encore trop lent. Vous n'utiliserez aucun index faisant '% 123%' (% d'avance)
Il n'y a aucune raison pour que '% 567%' soit plus rapide que '% 567380%' pour retourner toutes les lignes (car il doit analyser le même volume de données source). Cela peut sembler plus rapide parce que le raccourci de la chaîne doit correspondre au plus grand nombre de chances de trouver des correspondances, de sorte que les premières correspondances seront retournées plus tôt. Si vous parcourez un annuaire téléphonique à la recherche de personnes avec un «J» dans leur nom, vous obtiendrez une liste de 100 plus rapidement que si vous étiez à la recherche d'un «JU» dans leur nom. –