Data Analystのメモ帳

機械学習とかデータ分析とかしているData Analystのメモ帳です

読みにくいクエリを書くテクニック

クエリが読みにくくなって再利用性を下げるテクニックをいくつかメモします。良い子はマネしないでください。

インデントをめちゃくちゃにする

SQLはインデントを適当に書いても文法上エラーにならないのでいくらでもめちゃくちゃなインデントにすることができます。なのでインデント無しで改行するごとに全部行の頭から始めたり、そもそも改行せずに全部書くことだって可能です。インデントをバラバラにする方法は簡単で効果的に読みにくくすることができます。さらにインデントにスペースを使うことが多いですが2スペースと4スペースが混在するやりかたもあります。

withを使わないでインデントを深くする

サブクエリを書くときにwithを使うことで名前をつけて一時テーブルみたいに使うことができますが、これをせずにクエリ中にひたすらサブクエリを書き込んでインデントが深いクエリを書くと読みにくくなります。

インデントが深くなればなるほど単純に読みにくくなりますので、どんどんインデントを増やしていきましょう。前項のインデントをめちゃくちゃにするテクニックをあわせることでサブクエリが何を示しているのか全く意味不明にすることが可能です。

便利な関数や式などは使わない

SQLにはいろいろな関数があって大概の問題はスマートに記述することが可能なのですが、あえてそれを使わずに書くことで一見なにをしたいのかわからないクエリを書くことができます。window関数を使わずに相関サブクエリを利用したり、inner joinをカンマクロス結合とwhereで書いたり、タイムゾーンを変えるために手動で時間を加えたりする、といった例が挙げられます。

エイリアスをつけない or わかりにくいエイリアスをつける

SQLではテーブル名やカラム名にasを使うことでエイリアス(別名)をつけることができます。これを使うことでわかりやすい名前をつけると可読性が上がってしまうのでエイリアスを使わないでおいたり、意味がわからない名前をつけましょう。

わかりにくい名前とは例えば "a" とか "b" のようなアルファベット1文字がオススメです。テーブルの頭文字だけ集めてみると書くときは便利ですが読むときに読みにくくすることができるのでオススメです。


以上、ぱっと思いついたクエリを読みにくくするテクニックでした。
思いついたらまた書きます。
くれぐれも真似しないように。