Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Kolejność oceny klauzuli Oracle SQL

Lista wyboru nie zawsze może być oceniana jako ostatnia, ponieważ ORDER BY może używać aliasów zdefiniowanych na liście wyboru, więc muszą one zostać wykonane później. Na przykład:

SELECT foo+bar foobar FROM table1 ORDER BY foobar

Powiedziałbym, że ogólnie kolejność wykonania może wyglądać mniej więcej tak:

  • OD
  • GDZIE
  • GRUPUJ WG
  • WYBIERZ
  • POSIADAJĄC
  • ZAMÓW PRZEZ

Klauzule GROUP BY i WHERE można zamienić bez zmiany wyniku, podobnie jak HAVING i ORDER BY.

W rzeczywistości sprawy są bardziej złożone, ponieważ baza danych może zmieniać kolejność wykonywania zgodnie z różnymi planami wykonania. Dopóki wynik pozostaje taki sam, nie ma znaczenia, w jakiej kolejności jest wykonywany.

Zauważ również, że jeśli indeks zostanie wybrany dla klauzuli ORDER BY, wiersze mogą już być w prawidłowej kolejności podczas odczytu z dysku. W tym przypadku klauzula ORDER BY w ogóle nie jest wykonywana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00054:zasób zajęty i pozyskiwanie za pomocą NOWIT określone

  2. Jak uruchomić Opatch w formie nieinteraktywnej

  3. Unitils i DBMaintainer - jak sprawić, by działały z wieloma użytkownikami/schematami?

  4. nie można załadować oci8 -> Błąd krytyczny:Wywołanie niezdefiniowanej funkcji oci_connect()

  5. Uzyskaj listę wszystkich funkcji i procedur w bazie danych Oracle