sql >> Database teknologi >  >> RDS >> Sqlserver

Vil ANSI JOIN vs. ikke-ANSI JOIN-forespørgsler fungere anderledes?

De to forespørgsler er de samme, bortset fra at den anden er ANSI-92 SQL-syntaks, og den første er den ældre SQL-syntaks, som ikke inkorporerede join-klausulen. De bør producere nøjagtig den samme interne forespørgselsplan, selvom du måske gerne vil tjekke det.

Du bør bruge ANSI-92-syntaksen af ​​flere årsager

  • Brugen af ​​JOIN-sætningen adskiller relationslogikken fra filterlogikken (WHERE) og er dermed renere og lettere at forstå.
  • Det betyder ikke noget med denne specifikke forespørgsel, men der er nogle få tilfælde, hvor den ældre ydre joinsyntaks (ved hjælp af + ) er tvetydig, og forespørgselsresultaterne derfor er implementeringsafhængige - eller forespørgslen slet ikke kan løses. Disse forekommer ikke med ANSI-92
  • Det er god praksis, da de fleste udviklere og dba'er vil bruge ANSI-92 i dag, og du bør følge standarden. Alle moderne forespørgselsværktøjer vil helt sikkert generere ANSI-92.
  • Som påpeget af @gbn, har det en tendens til at undgå utilsigtede krydssammenføjninger.

Jeg modstod selv ANSI-92 i nogen tid, da der er en lille konceptuel fordel ved den gamle syntaks, da det er lettere at forestille sig SQL som en masse kartesisk joinforbindelse af alle brugte tabeller efterfulgt af en filtreringsoperation - en mental teknik, der kan være nyttig for at forstå, hvad en SQL-forespørgsel gør. Men jeg besluttede for et par år siden, at jeg var nødt til at flytte med tiden, og efter en relativt kort tilpasningsperiode foretrækker jeg det nu stærkt - overvejende på grund af den første årsag ovenfor. Det eneste sted, man bør afvige fra ANSI-92-syntaksen, eller rettere ikke bruge muligheden, er med naturlige joinforbindelser, som er implicit farlige.



  1. Hvordan returnerer man kun arbejdstid fra reservationer i PostgreSql?

  2. Slet en databasepostkonto (SSMS)

  3. Brug af JShell i Java 9 i NetBeans 9.0, del 3

  4. Sådan dropper du database ved at bruge TSQL og GUI - SQL Server / TSQL Tutorial Del 25