2013-10-26 12 views
8

Una domanda mi è venuta in mente mentre stavo sintonizzando una procedura memorizzata. Lasciatemelo chiedere -La prestazione INNER JOIN dipende dall'ordine delle tabelle?

Ho due tabelle, tabella1 e tabella2. table1 contiene dati enormi e table2 contiene meno dati. C'è qualche differenza di prestazioni tra queste due query (sto cambiando l'ordine delle tabelle)?

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 

Stiamo utilizzando Microsoft SQL Server 2005.

+4

Non in qualsiasi sistema di database sano di mente. Anche se volevi cambiare l'ordine dei tavoli. Tutti i database moderni mantengono statistiche sui volumi di dati per questo motivo. – Laurence

+0

Gli alias non hanno alcun effetto sulla query. Qual è la tua preoccupazione? –

+0

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

risposta

6

Alias, e l'ordine delle tabelle nel join (supponendo che sia INNER JOIN) non influisce sul risultato finale e quindi non influisce per formance poiché l'ordine è sostituito (se necessario) quando viene eseguita la query.

È possibile leggere alcuni concetti più basilari circa algebra relazionale qui: http://en.wikipedia.org/wiki/Relational_algebra#Joins_and_join-like_operators