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.

Wenn du diese Seite magst, magst du vielleicht auch …

… meine Newsletter bestellen, gratis Sticker erhalten, mein Buch kaufen oder an einer Schulung teilnehmen.

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, Bluesky 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»

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2010-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO