Domanda

Vorrei sapere se ci sono delle regole circa l'ordine di INNER JOIN di in T-SQL 2000.

ho avuto 62x la performance sul mio query quando il mio INNER JOIN che agiscono come un filtro è posto in un primo momento, invece della fine.

In riferimento del http: // sql -4-life.blogspot.com/2009/03/order-of-inner-joins.html

È stato utile?

Soluzione

La sequenza ottimale (il piano di query) è determinato dalla esecutore query basato sul codice SQL (operatori che utilizzi), statistiche di dati (distribuzione statistica dei valori nelle colonne, volume di dati, etc.) e la struttura del database (disponibilità di indici, tipi di dati, etc.). Quindi, ci sono delle regole, ma in primo luogo non tutti sono sotto il vostro controllo totale e secondo il risultato è detemined da una combinazione di molti fattori.

Per valutare le prestazioni, si dovrebbe sempre dare un'occhiata al piano di query stimato e confrontare le modifiche al piano causato dai cambiamenti nel codice SQL, ad undertand perché una corsa di query più veloce o più lento rispetto ad un altro.

Altri suggerimenti

L'ordine si scrive i join non è rilevante. La maggior parte, se non tutti, ottimizzatori (e certamente ottimizzatore di SQL Server) sanno che JOIN è associativa e commutativa.

Trovare il miglior piano di esecuzione (che significa ordine unire, unire algoritmo per ogni join, scelta di indici ad uso, ecc), è un problema molto difficile che è esattamente quello Ottimizzatori Query stati costruiti per risolvere e usano vari e complessi euristiche e tecniche. Ma l'ordine scriviamo i join nelle nostre query non viene preso in considerazione, a meno che (forse) come punto di partenza.

La scelta tra le (forse milioni o bilioni) modi di ordinare i join è tutt'altro che banale. E 'come essere gettati in un pianeta con un terreno pieno di cime e pozzi senza fondo con l'obiettivo di trovare il punto più basso. La posizione di partenza ha un effetto trascurabile in questa ricerca tranne forse nelle query molto complesse in cui l'ottimizzatore, ovviamente, non può passare l'eternità in considerazione tutti i piani possibili.

Se non sbaglio, simulati ricottura è una delle euristiche / tecniche utilizzato da di SQL Server Query Optimizer .
(Mi sbagliavo)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top