sql >> Database teknologi >  >> RDS >> Oracle

Evalueringsrækkefølge for Oracle SQL-sætning

Valglisten kan ikke altid evalueres sidst, fordi ORDER BY kan bruge aliaser, der er defineret i valglisten, så de skal udføres efterfølgende. For eksempel:

SELECT foo+bar foobar FROM table1 ORDER BY foobar

Jeg vil sige, at udførelsesrækkefølgen generelt kunne være sådan her:

  • FRA
  • HVOR
  • GRUPPER EFTER
  • VÆLG
  • HAR
  • BEstil efter

GROUP BY- og WHERE-sætningerne kunne byttes uden at ændre resultatet, ligesom HAVING og ORDER BY kunne.

I virkeligheden er tingene mere komplekse, fordi databasen kan omorganisere eksekveringen i henhold til forskellige eksekveringsplaner. Så længe resultatet forbliver det samme, er det lige meget, i hvilken rækkefølge det udføres.

Bemærk også, at hvis et indeks er valgt for ORDER BY-klausulen, kan rækkerne allerede være i den rigtige rækkefølge, når de læses fra disken. I dette tilfælde udføres ORDER BY-sætningen slet ikke.



  1. CHR() Funktion i Oracle

  2. Hvordan afrundes til nærmeste X minutter med PL/pgSQL?

  3. ADDDATE() Eksempler – MySQL

  4. PDO henter en kolonne fra tabel til 1-dimensionel array