2013-10-26 5 views
8

Eine Frage kam mir plötzlich in den Sinn, während ich eine gespeicherte Prozedur abstimmte. Lass es mich fragen -Ist die Leistung von INNER JOIN von der Reihenfolge der Tabellen abhängig?

Ich habe zwei Tabellen, Tabelle1 und Tabelle2. table1 enthält riesige Daten und table2 enthält weniger Daten. Gibt es einen Leistungsunterschied zwischen diesen beiden Abfragen (ich ändere die Reihenfolge der Tabellen)?

Query1:

SELECT t1.col1, t2.col2 
FROM table1 t1 
INNER JOIN table2 t2 
ON t1.col1=t2.col2 

Query2:

SELECT t1.col1, t2.col2 
FROM table2 t2 
INNER JOIN table1 t1 
ON t1.col1=t2.col2 

Wir verwenden Microsoft SQL Server 2005

+4

Nicht in jedem vernünftigen Datenbanksystem. Selbst wenn Sie die Reihenfolge der Tabellen ändern wollten. Alle modernen Datenbanken führen deshalb Statistiken über Datenmengen. – Laurence

+0

Aliase hat keinen Einfluss auf die Abfrage. Was ist dein Anliegen? –

+0

verwandt: http://stackoverflow.com/questions/9614922/does-the-join-order-matters-in-sql –

Antwort

6

Aliases, und die Reihenfolge der Tabellen in der Join (angenommen, es ist INNER JOIN) hat keinen Einfluss auf das Endergebnis und wirkt sich daher nicht pro formance, da der Auftrag bei der Ausführung der Abfrage ersetzt wird (falls erforderlich).

Sie können noch einige grundlegende Konzepte über relationale Algebra hier lesen: http://en.wikipedia.org/wiki/Relational_algebra#Joins_and_join-like_operators