Was ist ein Cross Join in SQL? Verstehen Sie die Grundlagen
Eine Anfrage gibt das kartesische Produkt der Zeilen aus den Tabellen in der Verknüpfung zurück. Dies ist das Ergebnis der Kombination jeder Zeile aus einer Tabelle mit jeder Zeile der zweiten Tabelle.
Wozu wird Cross Join verwendet?
Sie würden eine Kreuzverknüpfung verwenden, um alle möglichen Kombinationen der Zeilen einer Tabelle zusammen mit den Daten aus allen Zeilen einer zweiten Tabelle anzuzeigen. Stellen Sie sich vor, Sie möchten eine Liste aller verschiedenen Tesla SUV-Modelle in allen Farben sehen? Um Ihre Entscheidung zu treffen, müssen Sie sich alle Kombinationen vorstellen können, für die eine Liste hilfreich sein könnte. Da die Anzahl der SUV-Modelle als Farben gering ist, ist die Ergebnismenge nicht allzu groß. Normalerweise hätten Sie bereits eine Präferenz für die Farbe oder das Modell, so dass Sie eine häufigere Verknüpfungsoperation verwenden würden, die eine Verknüpfungsbedingung angibt, was zu einer kleineren Ergebnismenge führt.
Was ist der Unterschied zwischen Union und Cross Join?
Die Kreuzverknüpfung gibt jede Kombination von Zeilen zweier Tabellen in zwei Spalten zurück, wobei jede Kombination nebeneinander angezeigt wird. Eine Vereinigung gibt die gleiche Anzahl von Zeilen in einer einzigen Spalte zurück und eliminiert Duplikate.
Säule 1. Säule 2
MODELL X schwarz
MODELL Y schwarz
MODELL X weiß
MODELL Y weiß
Das Ergebnis mit einer UNION sieht dann so aus:
Säule 1
MODELL X
MODELL Y
Schwarz
Weiß
Was ist der Unterschied zwischen Cross Join und Inner Join?
Ein innerer Join gleicht alle Datensätze zwischen Tabellen ab, gibt aber nur übereinstimmende Werte zurück. Es handelt sich um die Schnittmenge zweier Tabellen. Bei der Kreuzverknüpfung werden alle Zeilen beider Tabellen angezeigt.
Cross Join in der SQL-Syntax
Es gibt zwei Varianten der SQL-Syntax für Cross-Join, eine mit und eine ohne Komma. Nachstehend finden Sie Beispiele für beide.
Die übliche Syntax lautet: SELECT * FROM [Tabelle1] CROSS JOIN [Tabelle2] ; Die Kommaversion der gleichen Anweisung lautet: SELECT * FROM [Tabelle1], [Tabelle2] ;
Eine Join-Bedingung ist nicht erforderlich, da alle Zeilen zurückgegeben werden.
Beispiel
In diesem Beispiel werden wir zwei Tabellen verwenden, von denen eine die Tesla SUV-Modelle enthält (siehe unten):
TABELLE: Tesla-SUV-Modelle
Spalten: Modelle
Werte:
MODELL X
MODELL Y
Die zweite Tabelle enthält Autofarben wie unten:
TABELLE: Tesla-Farben
Spalten: Farben
Werte:
Schwarz
Weiß
Im Folgenden finden Sie eine Beispiel-SQL-Anweisung für einen Cross-Join:
SELECT * FROM Tesla-SUV-Modelle CROSS JOIN Tesla-Farben;
Die Ergebnisse werden wie folgt aussehen:
Modelle Farben
MODELL X schwarz
MODELL Y schwarz
MODELL X weiß
MODELL Y weiß
Wie Sie sehen können, ergab die Anfrage alle möglichen Kombinationen der Spalten aus beiden Tabellen.
Verwendung von Kreuzverbindungen
Die Kreuzverknüpfung gilt als eine sehr teure Anweisung in Bezug auf die Datennutzung, da sie das Produkt der zu verknüpfenden Tabellen zurückgibt. Wenn die erste Tabelle 100 Zeilen und die zweite Tabelle 1000 Zeilen enthält, gibt die resultierende Anfrage 100 x 1000 Zeilen zurück, also 100.000 Zeilen.
Im SQL Server-Dokument heißt es: "Dies ist ein potenziell teurer und gefährlicher Vorgang, da er zu einer großen Datenexplosion führen kann. Er wird am besten in Szenarien verwendet, in denen ein normaler Join nicht verwendet werden kann und sehr selektive Prädikate in der WHERE-Klausel verwendet werden, um die Anzahl der erzeugten Zeilen zu begrenzen."
A more format definition of the operation can be described as follows; The Cartesian Product is a multiplication operation in set theory that generates all ordered pairs of the given sets. If A is a set and elements are {a,b} and B is a set with elements {1,2,3}. The Cartesian Product of these two A and B is denoted A x B, and the result will be as follows:
AxB ={(a,1), (a,2), (a,3), (b,1), (b,2), (b,3)}
Viele kostenbasierte Anfrage und BI-Tools kennzeichnen die Anfrage als teuer in der Ausführung und geben einen Fehler gleich zu Beginn der Ergebnismenge als Vorschau mit einer Warnung zurück. Wenn sich die Daten nicht oft ändern, sind die Tabellen groß genug, dass der DBA eine materialisierte Ansicht der Daten erstellen kann, die automatisch aktualisiert wird, wenn sich die Daten ändern.
Besuchen Sie die ActianWebsite, um mehr über unser Angebot an Datenprodukten und -dienstleistungen zu erfahren.