エンジニアのはしくれ

システム開発、ものづくり、etc…

SQLのWITH句の使いどころやメリット

はじめに

今回の記事は、SQLのWITH句についてです。そもそも「WITH句って何?」という方は以下のサイトを見てみてください。

www.shift-the-oracle.com

itsakura.com

WITH句の使いどころやメリット

同じようなサブクエリを書くとき

WITH句の使いどころとして、一つのSQL内で、同じようなサブクエリを何回か書きたくなったとき、そのサブクエリはWITH句にした方がいいです。個人的には、メインのクエリでUNIONするときにそういう状況になることが多いです。

SQLの保守性が向上する

WITH句のメリットとして、SQLが読みやすくなる(可読性UP)という意見も多いようですが、私はSQLに手を入れる箇所が少なくて済む(保守性UP)というメリットの方が大きいと思っています。いわゆる「DRY原則」(Don’t Repeat Yourself)です。

qiita.com

さらに、そのWITH句のクエリが(一つのSQL内ではなくて)複数のSQLにわたって使われる場合は、恐らくVIEWで定義してしまった方がいいです(CREATE VIEW文)。

(参考)サブクエリ等の複雑なSQLを見やすくする工夫

SQLには適切なインデントを入れて見やすくするのはもちろんですが、設計書等のドキュメントがある場合は、以下のように関連するブロックを枠で囲うのがオススメです。

f:id:akairopapa:20200505012616p:plain

上記はシンプルな例ですが、複雑なSQLになればなるほど効果を発揮します。サブクエリだけでなく、CASE式やUNIONの上下のクエリ等にも応用できます。枠の中に枠が入ったりするときもありますが、SQLをつくった人の考え方が分かって読みやすいです。

ぜひ試してみてください!