Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Która składnia łączenia jest lepsza?

Cóż, „lepsze” jest subiektywne. Jest tu trochę stylu. Ale odpowiem na Twoje pytania bezpośrednio.

  1. Oba robią to samo
  2. Oba są zgodne z ANSI.
  3. Problem z pierwszym przykładem polega na tym, że

    • bardzo łatwo jest nieumyślnie wyprowadzić produkt krzyżowy (ponieważ łatwiej jest pominąć kryteria łączenia)

    • trudne staje się również debugowanie kryteriów łączenia, gdy dodajesz coraz więcej tabel do łączenia

    • odkąd składnia sprzężenia zewnętrznego w starym stylu (*=) jest przestarzała (od dawna udokumentowano, że zwraca niepoprawne wyniki), kiedy trzeba wprowadzić sprzężenia zewnętrzne, trzeba mieszać sprzężenia nowego i starego stylu ... po co promować niespójność?

    • chociaż nie jest to dokładnie autorytet w zakresie najlepszych praktyk, Microsoft zaleca wyraźną składnię INNER/OUTER JOIN

    • z tą drugą metodą:

      • używasz spójnej składni łączenia niezależnie od wewnętrznego / zewnętrznego
      • trudniejsze (nie niemożliwe) jest przypadkowe wyprowadzenie iloczynu krzyżowego
      • odizolowanie kryteriów przyłączenia od kryteriów filtrowania może ułatwić debugowanie

Napisałem post, na który wskazał Kevin.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj „czas” na „przesunięcie daty” w SQL Server (przykłady T-SQL)

  2. @@BŁĄD i/lub SPRÓBUJ - CATCH

  3. Typ danych SQL Server BIT — ostateczny przewodnik

  4. Wprowadzenie do programu SQL Server 2017 w systemie Linux w portalu Azure

  5. Jak wysłać e-mailem wyniki zapytania w SQL Server (T-SQL)