von Markus Winand.

Sort-Merge


Der Sort-Merge-Join verbindet zwei Tabellen wie ein Reißverschluss. Dafür müssen beide Seiten nach den Join-Spalten vorsortiert sein.

Ein Sort-Merge-Join benötigt dieselbe Indizierung wie ein Hash-Join. Also Indizes auf den unabhängigen Prädikaten, um alle potenziell passenden Einträge in einem Zug zu lesen. Die Indizierung der Join-Prädikate ist nutzlos. So weit ist also alles wie beim Hash-Join. Der Sort-Merge-Join ist jedoch noch symmetrischer als ein Hash-Join. Die Join-Richtung macht keinen Unterschied – nicht einmal für die Performance. Dadurch ist der Sort-Merge-Join besonders gut für Outer-Joins geeignet. Denn bei anderen Algorithmen legt ein Outer-Join die Join-Richtung fest – nicht so beim Sort-Merge-Join. Dadurch kann der Sort-Merge-Algorithmus einen Left- und Right-Outer-Join sogar gleichzeitig durchführen – also einen Full-Outer-Join, wie in der folgenden Animation zu sehen ist.

Abbildung 4.1 Sort-Merge-Join führt einen Full-Outer-Join aus

Obwohl der Sort-Merge-Join sehr gute Performance liefert, sobald beide Seiten sortiert sind, wird er kaum benutzt, weil das Sortieren sehr auf­wen­dig ist. Ein Hash-Join muss dagegen nur eine Seite vorverarbeiten.

Hinweis in eigener Sache

Ich biete SQL Schulungen, Optimierung und Beratung an. Auch der Kauf meines Buches „SQL Performance Explained“ (ab €9,95) unterstützt meine Arbeit an dieser Webseite.

Die Stärke des Sort-Merge-Joins kommt zum Tragen, wenn die beiden Seiten bereits vorsortiert sind. Dadurch wird der Sortieraufwand völlig vermieden. Das kann man zum Beispiel erreichen, indem man die Index-Reihenfolge dafür ausnutzt. Dieses Konzept wird in Kapitel 6, „Sortieren und Gruppieren, genauer beschrieben. Dennoch ist der Hash-Join in vielen Bereichen überlegen.

Fakten

  • Sort-Merge-Join benötigt keine Indizes für die Join-Prädikate.

  • MySQL hat keinen Sort-Merge-Join.

Vorherige SeiteNächste Seite

Du kannst nicht alles an einem Tag lernen. Abonniere den Newsletter via E-Mail, Twitter oder RSS um sukzessive aufzuholen. Und sieh dir auch modern-sql.com an.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„Use The Index, Luke!“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO | CC-BY-NC-ND 3.0 Lizenz