Oracle
 sql >> Base de données >  >> RDS >> Oracle

Un impact sur les performances dans Oracle pour l'utilisation de LIKE 'string' vs ='string'?

Il existe une nette différence lorsque vous utilisez des variables de liaison, que vous devriez utiliser dans Oracle pour autre chose que l'entreposage de données ou d'autres opérations de données en masse.

Prenons le cas de :

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle ne peut pas savoir que la valeur de :b1 est '%some_value%', ou 'some_value' etc. peut ou non convenir à diverses valeurs de :b, telles que '%A','%', 'A' etc.

Des problèmes similaires peuvent s'appliquer avec un prédicat d'égalité, mais la plage de cardinalités qui pourrait en résulter est beaucoup plus facilement estimée sur la base des statistiques de colonne ou de la présence d'une contrainte unique, par exemple.

Donc, personnellement, je ne commencerais pas à utiliser LIKE en remplacement de =. L'optimiseur est parfois assez facile à tromper.