Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Join-Bedingungen für mehrere Spalten im Vergleich zu Single Join für verkettete Spalten?

Ich denke, die Version mit Verkettung wird praktisch immer langsamer sein.

Wenn eine der Spalten, die Sie einzeln vergleichen, Indizes hat, kann die Datenbank normalerweise die Indizes verwenden, um den Join zu optimieren. Wenn Sie Verkettungen vergleichen, müssen vollständige Tabellenscans durchgeführt werden, da das Ergebnis einer Berechnung nicht im Index enthalten ist.

Und selbst wenn die Spalten nicht indiziert sind, kann die Datenbank die Vergleiche dennoch effizienter durchführen. Es vergleicht jeweils ein Spaltenpaar und kann anhalten, sobald einer dieser Vergleiche fehlschlägt. Wenn Sie die Verkettung verwenden, müssen Sie zuerst alle Spalten in beiden Zeilen kombinieren und dann einen Zeichenfolgenvergleich durchführen.

Wenn schließlich eine der Spalten numerisch ist, erfordert die Verkettung den zusätzlichen Schritt, die Zahl in eine Zeichenfolge umzuwandeln.