SQLiteリファレンス
当サイトはSQLiteに関するSQL文やコマンドのリファレンスサイトです。
HOME > SQLiteとは?

SQLiteの評価順序・実行順序

SQL文は、他の文と同じように左から書き始めて、右に続けて行きますが、データベースによる 評価順序や実行順序は、書いた順番にはなってはいません。

SQLの評価順序・実行順序

SQL文の句内容
fromテーブルの指定
onテーブルの結合条件
joinテーブルの結合
where条件を指定
group byグループ化
having集計後の絞込み
select検索
distinct検索・重複除去
order by並べ替え
limit取得件数の指定

最初に条件によってテーブルの中からデータが取得されてから表示出来るようになり、その後に 並べ替えや表示件数が評価されていることがわかります。

ASでつけた別名が使えない理由

SQL文の実行順序を確認するとわかりますが
select カラム名 as カラムの別名 from テーブル名 where カラムの別名
と書いてもwhereから評価されるので、selectで付けた別名は使えません。

LIMIT句で制限しても遅い理由

LIMITでデータ取得件数を指定しても、最初にwhereでテーブルからデータの抽出条件によって データを取得してから、LIMITで表示件数を取得しているので、where句で絞り込まない限り 速くはならないことがわかります。

ON句とWHERE句のどちらに書くか

onはテーブルの結合条件で、whereはデータの抽出条件になります。 on句で条件を書くのとwhere句で条件を書くのとではデータの抽出に違いが出ます。 また、explain や explain query planを実行してみるとわかるのですが、where句から実行されることもあります。 データベースは必ずしも上記の表に書いた実行順序通りにSQL文を実行するわけではなくオプティマイザーの 判断によっても変更されます。

テーブルの結合などは条件をonに書いてもwhereに書いても実行順序は変わりません。