Quale è più veloce aderire


12

Quale è più veloce

SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique

o

SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID

Risposte:


17

Non ci sarà alcuna differenza: il motore di query in mssql (e nella maggior parte dei motori di database) costruirà lo stesso piano di query per entrambi. È possibile verificarlo visualizzando il piano di query stimato ed effettivo in SQL Workbench.


10

L'ottimizzatore lo ignorerà perché è un JOIN identico.

SQL è dichiarativo, non procedurale e la query verrà valutata in toto, non riga dopo riga.


4

Che ne dici di creare un test che utilizza i tuoi dati per rispondere alla tua domanda?

Se impari solo una cosa sulla programmazione del database, è che spesso non esiste mai una dimensione adatta a qualsiasi soluzione. Ci sono buone pratiche ovviamente, ma nel complesso è sempre caso per caso.

Il motivo per cui dico questo è perché con le query del database delle relazioni spesso non esiste un approccio a dimensione unica adatto a qualsiasi cosa. Poiché esiste un pianificatore che decide come eseguire i dati, la stessa query può accendersi rapidamente o molto lentamente a seconda di ciò che il pianificatore sceglie di fare con le informazioni che ha a disposizione in qualsiasi momento. Ad esempio, a volte un indice è il tuo migliore amico un mese e un mese dopo il tuo peggior nemico a seconda che tu stia cercando o inserendo dati e in che modo gli altri stiano usando il sistema mentre stai eseguendo la query. Quindi consiglio sempre di creare un test che dimostri per il tuo caso d'uso come verrà eseguita questa query. E anche in questo caso i tuoi risultati possono variare nel tempo e tornerai a ottimizzare con il variare dei dati e dell'utilizzo.

Penso che le risposte che otterrai dallo stackoverflow saranno le risposte ai libri di testo, non la risposta del mondo reale che solo il tuo ambiente può fornire. E alla fine è il risultato del tuo mondo reale che conta.

Ora la tua semplice query che stai mostrando qui dovrebbe avere le stesse prestazioni. Ma anche allora dico di provarlo e dimostrarlo se stai ponendo la domanda. Mi fiderei dei risultati prima di fidarmi della risposta di chiunque, incluso il mio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.