Welches ist schneller verbinden

12

Welche ist schneller

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

oder

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

Antworten:

17

Es wird keinen Unterschied geben - das Abfragemodul in mssql (und in den meisten Datenbankmodulen) erstellt für beide denselben Abfrageplan. Sie können dies überprüfen, indem Sie den geschätzten und den tatsächlichen Abfrageplan in SQL Workbench anzeigen.

Michael Petrotta
quelle
10

Das Optimierungsprogramm ignoriert dies, da es sich um einen identischen JOIN handelt.

SQL ist deklarativ, nicht prozedural, und die Abfrage wird nicht zeilenweise, sondern vollständig ausgewertet.

gbn
quelle
4

Wie wäre es, einen Test zu erstellen, der Ihre eigenen Daten verwendet, um Ihre Frage zu beantworten?

Wenn Sie nur eines über die Datenbankprogrammierung lernen, ist es oftmals so, dass nie eine einheitliche Lösung für irgendetwas passt. Es gibt natürlich Best Practices, aber insgesamt ist es immer von Fall zu Fall.

Der Grund, warum ich das sage, ist, dass es bei Beziehungsdatenbankabfragen oft keine einheitliche Vorgehensweise für alles gibt. Da es einen Planer gibt, der entscheidet, wie Ihre Daten verwaltet werden sollen, kann dieselbe Abfrage schnell oder sehr langsam leuchten, je nachdem, was der Planer mit den zu einem bestimmten Zeitpunkt verfügbaren Informationen tun möchte. Zum Beispiel ist ein Index manchmal ein Monat später Ihr bester Freund und ein Monat später Ihr schlimmster Feind, abhängig davon, ob Sie Daten suchen oder einfügen und wie andere das System verwenden, während Sie die Abfrage ausführen. Daher empfehle ich immer, einen Test zu erstellen, der für Ihren Anwendungsfall die Leistung dieser Abfrage belegt. Und selbst dann können Ihre Ergebnisse im Laufe der Zeit variieren und Sie werden zurückkehren, um zu optimieren, wenn sich Daten und Nutzung ändern.

Ich denke, die Antworten, die Sie von stackoverflow erhalten, werden Lehrbuchantworten sein, nicht die reale Antwort, die nur Ihre Umgebung liefern kann. Und am Ende kommt es auf das Ergebnis Ihrer realen Welt an.

Nun sollte Ihre einfache Abfrage, die Sie hier anzeigen, in Bezug auf die Leistung identisch sein. Aber selbst dann sage ich, teste es und beweise es, wenn du die Frage stellst. Ich würde den Ergebnissen vertrauen, bevor ich jemandem vertraue, der antwortet, auch meinen.

Kuberchaun
quelle