Optimisation des performances PL / SQL pour les requêtes génériques LIKE '% ...%'

Nous utilisons la base de données Oracle 11g.

Comme vous pouvez ou ne pouvez pas savoir, si vous utilisez les caractères génériques de la requête avec "%" en avant de la chaîne, la colonne index n'est pas utilisé et un full table scan qui se passe.

Il semble comme il n'y a pas de manière définitive à une suggestion sur la façon d'améliorer ce type de requête, mais vous pouvez peut-être partager quelques précieuses informations à partir de votre expérience sur la manière d'optimiser la requête suivante:

SELECT * 
  FROM myTable 
 WHERE UPPER(CustomerName) like '%ABC%' 
    OR UPPER(IndemnifierOneName) like '%ABC%' 
    OR UPPER(IndemnifierTwoName) like '%ABC%';

...où tous les 3 colonnes sont de type varchar2(100) et ABC est une valeur de la variable paramètre d'entrée.

@Tous ce qui suggère CONTEX index, veuillez noter mes données est mise à jour à tout moment de la journée tous les jours et cet indice nécessite la re-synchronisation, c'est pas une bonne option pour une table de de 1,5 million de lignesdésolé.

P. S. je vais upvote chaque réponse, donc s'il vous plaît garder à venir.

source d'informationauteur Tsar