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

Conditions de jointure sur plusieurs colonnes par rapport à une jointure unique sur des colonnes concaténées ?

Je pense que la version avec concaténation sera pratiquement toujours plus lente.

Si l'une des colonnes que vous comparez individuellement a des index, la base de données pourra normalement utiliser les index pour optimiser la jointure. Lorsque vous comparez des concaténations, il doit effectuer des analyses complètes de la table, car le résultat d'un calcul ne figurera pas dans l'index.

Et même si les colonnes ne sont pas indexées, la base de données peut toujours effectuer les comparaisons plus efficacement. Il compare une paire de colonnes à la fois et peut s'arrêter dès que l'une de ces comparaisons échoue. Lors de l'utilisation de la concaténation, il doit d'abord combiner toutes les colonnes, dans les deux lignes, puis effectuer une comparaison de chaînes.

Enfin, si l'une des colonnes est numérique, la concaténation nécessitera l'étape supplémentaire de conversion du nombre en chaîne.