sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL-sats utvärderingsordning

Vallistan kan inte alltid utvärderas sist eftersom ORDER BY kan använda alias som är definierade i urvalslistan så att de måste exekveras i efterhand. Till exempel:

SELECT foo+bar foobar FROM table1 ORDER BY foobar

Jag skulle säga att i allmänhet kan exekveringsordningen vara ungefär så här:

  • FRÅN
  • VAR
  • GRUPPER EFTER
  • VÄLJ
  • HA
  • BESTÄLL AV

GROUP BY- och WHERE-satserna kan bytas ut utan att resultatet ändras, liksom HAVING och ORDER BY.

I verkligheten är saker och ting mer komplexa eftersom databasen kan ordna om exekveringen enligt olika exekveringsplaner. Så länge resultatet förblir detsamma spelar det ingen roll i vilken ordning det exekveras.

Observera också att om ett index väljs för ORDER BY-satsen kan raderna redan vara i rätt ordning när de läses från disken. I det här fallet exekveras inte ORDER BY-satsen alls.



  1. Begränsa en SQL Server-anslutning till en specifik IP-adress

  2. SQL Server BULK INSERT från Linux

  3. Funktioner med variabelt antal ingångsparametrar

  4. PostgreSQL 11 - Procedurer