WITH句を使って、SQL再入門
SQL is Hard...
SQL。ふわっふわの言語であり、シンプルでありながら難しい言語。
自分もそうだったが、SQL嫌いな人はサブクエリの存在が一番の敵だと思う。
なので、サブクエリの存在を忘れてSQLについて一回再入門する記事を書こうと思う。
キーワードは「WITH」。
まず、サブクエリを捨てる
サブクエリが混ざるとSQLは途端にアレルゲンになる。
なぜかといえば、定義してる途中で定義が混ざってくるのが何よりよくない。
思考が上から下に流れていく途中で横に流れて戻ってきて……。
といった感じになってしまう。これが良くない。
そこで、まずサブクエリを忘れて、WITH句を使ってSQLを組もう。
裏を返せば、これがわかればサブクエリは簡単になる。
これだけ。中身も書かないくらい簡単だが、こんな感じで書いてしまえばいいのだ。
サブクエリが上に来る、それだけのことともいえるが、これでいい。
「上で定義されたものを下で使う」というほとんどの言語で使われている構造に、
SQLの側を当てはめて書いてしまえばいいのだ。
FROM句の中でさらにサブクエリを書くことがなくなるだけで、
ぐっとSQLは読みやすく、簡単になる。
WITH句を使えば、入れ子のSQLなんて醜い物はもう見る必要がない。
自分も読む気がないし、読まされるのも苦痛だ。
できる限り読みやすく、平易に書いていこう。高速化の心配は後でもできる。
また、読みやすいSQLは高速化も容易だし、
使わないでサブクエリにするのは後からでもできる。
読みにくいSQLはまず手を入れること自体が難しい。それを思えば万倍マシだ。
あとは、これをひな型に現場に応じて手を加えればいいと思う。
難しいことを一切投げ捨てて、そこからゆっくりと、小さく進めればいい。
小さく作って大きく膨らませていこう。