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.