CROSS JOIN ·
Kartesisches Produkt ·
Anwendungen ·
Mit WHERE ·
Performance ·
Praxis-Beispiele
CROSS JOIN erzeugt alle Kombinationen von Zeilen zweier Tabellen – das kartesische Produkt. Er wird für Matrixoperationen, Kombinationslisten und Testdaten verwendet.
CROSS JOIN (auch kartesisches Produkt) kombiniert jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle. Die Anzahl der Ergebniszeilen ist |A| × |B|.
FROM tabelle1, tabelle2 ohne JOIN-Bedingung geschrieben – das ist die ältere, aber weit verbreitete Syntax.
CROSS JOIN kann auf drei Arten geschrieben werden: mit explizitem CROSS JOIN, mit der impliziten Komma-Syntax oder mit JOIN ON 1=1. Alle Varianten erzeugen das gleiche Ergebnis.
CROSS JOIN-Syntax ist die beste Wahl – sie macht die Absicht klar und ist weniger fehleranfällig als die implizite Komma-Syntax.
CROSS JOIN wird verwendet, wenn Sie alle möglichen Kombinationen zwischen zwei oder mehreren Datensätzen benötigen – z.B. für Matrixoperationen, Produktvarianten oder Testdaten.
| Anwendung | Beschreibung |
|---|---|
| Produktvarianten | Alle Kombinationen von Größen und Farben für ein Produkt |
| Matrixoperationen | Berechnung von Kennzahlen für alle Kombinationen |
| Testdaten | Generierung von Testdatensätzen für andere Queries |
| Berechnungen | Kombinatorische Auswertungen (z.B. Preiskalkulation) |
| Pivot-Tabellen | Grundlage für Kreuztabellen |
CROSS JOIN mit WHERE ist die alte Methode, um Tabellen zu verbinden. Heute wird dafür INNER JOIN mit ON-Bedingung empfohlen – das ist klarer und weniger fehleranfällig.
Performance ist die größte Herausforderung bei CROSS JOIN. Die Ergebnismenge wächst exponentiell mit der Größe der Tabellen – ein CROSS JOIN über zwei 10.000-Zeilen-Tabellen erzeugt 100 Millionen Zeilen.
| Tipp | Beschreibung |
|---|---|
| WHERE vor der Kombination | Filtere zuerst, dann kombiniere (Subqueries oder CTEs) |
| LIMIT | Verwende LIMIT, um die Ergebnismenge zu begrenzen |
| Nur benötigte Spalten | SELECT nur die benötigten Spalten, nicht * |
| Aggregation statt großer Ergebnisse | Manchmal reicht eine Aggregation statt der gesamten Kombinationsliste |
| Testen | Teste mit kleinen Datenmengen oder LIMIT |
Praxis-Beispiele zeigen die Anwendung von CROSS JOIN für Planungs- und Kombinationsaufgaben – von Produktvarianten über Matrix-Auswertungen bis zur Testdatengenerierung.
CROSS JOIN
FROM A, B
Kombinationen
WHERE
Performance
Matrix
SELECT * FROM A CROSS JOIN B; ·
SELECT * FROM A, B WHERE A.id = B.foreign_id;