Które jest szybsze dołączanie

12

Który jest szybszy

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

lub

SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID
Costa
źródło

Odpowiedzi:

17

Nie będzie różnicy - aparat zapytań w mssql (i w większości silników baz danych) zbuduje ten sam plan zapytań dla obu. Możesz to sprawdzić, przeglądając szacunkowy i aktualny plan zapytań w SQL Workbench.

Michael Petrotta
źródło
10

Optymalizator zignoruje to, ponieważ jest to identyczne DOŁĄCZENIE.

SQL jest deklaratywny, a nie proceduralny, a zapytanie zostanie ocenione w całości, a nie linia po linii.

gbn
źródło
4

Co powiesz na utworzenie testu, który wykorzysta twoje dane, aby odpowiedzieć na twoje pytanie?

Jeśli nauczysz się tylko jednej rzeczy na temat programowania baz danych, to, że często nie ma jednego rozmiaru, który pasuje do każdego rozwiązania. Istnieją oczywiście najlepsze praktyki, ale ogólnie rzecz biorąc zawsze tak jest w każdym przypadku.

Mówię to dlatego, że w przypadku zapytań do relacyjnych baz danych często nie ma jednego rozwiązania dla wszystkich. Ponieważ istnieje planista, który decyduje o sposobie postępowania po danych, to samo zapytanie może świecić szybko lub bardzo wolno, w zależności od tego, co planista zrobi z dostępnymi informacjami w danym momencie. Na przykład, indeks jest twoim najlepszym przyjacielem miesiąc, a miesiąc później twoim największym wrogiem, w zależności od tego, czy szukasz lub wstawiasz dane, a także jak inni korzystają z systemu podczas uruchamiania zapytania. Dlatego zawsze zalecam utworzenie testu, który wykaże dla twojego przypadku użycia, jak to zapytanie będzie działać. Nawet wtedy Twoje wyniki mogą się zmieniać w czasie i wrócisz do optymalizacji w miarę zmian danych i użytkowania.

Myślę, że odpowiedzi, które otrzymasz od stackoverflow, będą odpowiedziami w formie podręczników, a nie odpowiedziami w świecie rzeczywistym, które może zapewnić tylko twoje środowisko. I w końcu liczy się twój rzeczywisty wynik.

Teraz Twoje proste zapytanie, które tutaj wyświetlasz, powinno mieć tę samą wydajność. Ale nawet wtedy mówię przetestuj to i udowodnij, jeśli zadajesz pytanie. Ufam wynikom, zanim zaufam komukolwiek odpowiedzi, w tym mojej.

Kuberchaun
źródło