sql >> Database >  >> RDS >> Sqlserver

Welke join-syntaxis is beter?

Nou, "beter" is subjectief. Er is hier een bepaalde stijl. Maar ik zal uw vragen rechtstreeks beantwoorden.

  1. Beiden voeren hetzelfde uit
  2. Beide zijn ANSI-compatibel.
  3. Het probleem met het eerste voorbeeld is dat

    • het is heel gemakkelijk om per ongeluk het kruisproduct af te leiden (omdat het gemakkelijker is om criteria voor deelname weg te laten)

    • het wordt ook moeilijk om de join-criteria te debuggen naarmate je meer en meer tabellen aan de join toevoegt

    • aangezien de syntaxis van de outer join (*=) in oude stijl is verouderd (er is al lang gedocumenteerd dat het onjuiste resultaten oplevert), moet u, wanneer u outer joins moet introduceren, nieuwe stijl en oude joins combineren ... waarom promoten inconsistentie?

    • hoewel het niet bepaald de autoriteit is op het gebied van best practices, raadt Microsoft een expliciete INNER/OUTER JOIN-syntaxis aan

    • met de laatste methode:

      • je gebruikt een consistente syntaxis voor joins, ongeacht inner/outer
      • het is moeilijker (niet onmogelijk) om per ongeluk het kruisproduct af te leiden
      • het isoleren van de deelnamecriteria van de filtercriteria kan het debuggen vergemakkelijken

Ik heb het bericht geschreven waar Kevin naar verwees.




  1. Hoe JDBC te gebruiken om MySql-database te verbinden?

  2. Beveiligingsfuncties in SQL Server 2017

  3. De pt-pg-summary Percona Toolkit voor PostgreSQL gebruiken

  4. Er is een fout opgetreden tijdens het installeren van pg (0.17.1), en Bundler kan niet doorgaan