Comment les conjonctions (AND) et les disjonctions (OR) fonctionnent-elles dans l’optimisation de la recherche ?

L’optimisation de la recherche peut accélérer les requêtes en utilisant les conjonctions (opérateur AND) et les disjonctions (opérateur OR) des prédicats pris en charge.

Conjonctions de prédicats pris en charge (AND)

Pour les requêtes qui utilisent des conjonctions de prédicats (c’est-à-dire AND), les performances des requêtes peuvent être améliorées par l’optimisation de la recherche si l’un des prédicats en profite.

Par exemple, supposons qu’une requête a :

where condition_x and condition_y

L’optimisation de la recherche peut améliorer les performances si l’une des conditions renvoie séparément quelques lignes (c’est-à-dire que condition_x renvoie quelques lignes ou condition_y renvoie quelques lignes).

Si condition_x renvoie quelques lignes mais que condition_y renvoie de nombreuses lignes, les performances de la requête peuvent toujours bénéficier de l’optimisation de la recherche.

Exemples

Si les prédicats sont pris en charge individuellement par le service d’optimisation de la recherche, ils peuvent être joints par la conjonction AND et être toujours pris en charge par le service d’optimisation de la recherche :

select id, c1, c2, c3
    from test_table
    where c1 = 1
       and
          c3 = TO_DATE('2004-03-09')
    order by id;
Copy

DELETE et UPDATE (et MERGE) peuvent également utiliser le service d’optimisation de la recherche :

delete from test_table where id = 3;
Copy
update test_table set c1 = 99 where id = 4;
Copy

Disjonctions de prédicats pris en charge (OR)

Pour les requêtes qui utilisent des disjonctions de prédicats (c’est-à-dire OR), les performances des requêtes peuvent être améliorées par l’optimisation de la recherche si tous les prédicats en profitent.

Par exemple, supposons qu’une requête a :

where condition_x or condition_y

L’optimisation de la recherche peut améliorer les performances si chaque condition renvoie séparément quelques lignes (par exemple, condition_x renvoie quelques lignes et condition_y renvoie quelques lignes).

Si condition_x renvoie quelques lignes mais que condition_y renvoie de nombreuses lignes, les performances de la requête ne bénéficient pas de l’optimisation de la recherche.

Dans le cas de disjonctions, chaque prédicat isolé n’est pas déterminant dans la requête. Tous les prédicats doivent être évalués pour déterminer si l’optimisation de la recherche peut améliorer les performances.