ECサイトの管理画面で、受注データ一覧を様々な条件で絞り込み検索する機能を実装した。
できたけど、テーブル自己結合とサブクエリーの連発で処理がめちゃくちゃ重い。
調べてみたら、ON句に複数の条件を設定することでサブクエリー化せずに同じコトができると分かったので、メモしておく。
前提知識として、SELECT文の処理順序を知っておく必要がある。
1.FROM
2.ON
3.JOIN
4.WHERE
5.GROUP BY
6.HAVING
7.SELECT
8.DISTINCT
9.ORDER BY
10TOP(LIMIT)
https://qiita.com/suzukito/items/edcd00e680186f2930a8
今回の話に関係があるのは2.~4.です。
結合条件
ON句に書く条件。JOIN句の前に処理される。
つまり、ON句に書かれた条件に合うレコードがJOINの対象になる。
通常はテーブル同士の結合条件が書かれるが、ANDやORを続けて書くことで、片方のテーブルの結合対象レコードを限定できる。
SELECT テーブルA.ID, テーブルB.商品名
FROM テーブルA
INNER JOIN テーブルB
ON テーブルA.ID = テーブルB.id
AND テーブルB.商品名 = 'りんご';
コメントを残す