ORDER BYは選択リストで定義されたエイリアスを使用できるため、選択リストを常に最後に評価できるとは限りません。そのため、後で実行する必要があります。例:
SELECT foo+bar foobar FROM table1 ORDER BY foobar
一般的に、実行の順序は次のようになります。
- FROM
- 場所
- GROUP BY
- SELECT
- 持っている
- 注文者
GROUP BY句とWHERE句は、HAVINGとORDER BYのように、結果を変更せずに入れ替えることができます。
実際には、データベースはさまざまな実行計画に従って実行を並べ替えることができるため、状況はより複雑になります。結果が同じである限り、実行される順序は関係ありません。
ORDER BY句にインデックスが選択されている場合、行がディスクから読み取られたときに、行がすでに正しい順序になっている可能性があることにも注意してください。この場合、ORDERBY句は実際にはまったく実行されません。