見出し画像

『SQL緊急救命室』の感想

以下の本を読了したので感想をまとめます。


このページはAmazonアソシエイトの広告を含みます。

どんな本?

SQL中級者、または中級を目指す初級者を対象とした本です。「緊急救命室」に持ち込まれたイケてないSQLを診断し、CASE式やWindow関数など効能の高い処方を与えてSQLを改善するというストーリー仕立てとなっています。

序章:本書を読むにあたってのSQLの基礎──モダンなSQLの必須技術、CASE式とウィンドウ関数
第1章:サブクエリ・パラノイア──サブクエリの功罪
第2章:冗長性症候群──条件分岐をUNIONで表現するなかれ
第3章:ループ依存症──手続き型の呪縛を打ち破れ!
第4章:スーパーソルジャー病──すべての問題をやみくもにコーディングで解くべからず
第5章:時代錯誤症候群──進化し続けるSQLに取り残されるな!
第6章:ロックイン病──実装依存の罠にはまるな!
第7章:SQLグレーノウハウ──毒と薬は紙一重
第8章:集合指向アレルギー──なぜSQLはエンジニアにとってわかりにくいのか
第9章:リレーショナル原理主義病──ウィンドウ関数は邪道なのか
第10章:更新時合併症──冗長なサブクエリ、性能劣化、実装依存
第11章:ライトスタッフ──正しい資質
第12章:演習問題の解答

『SQL緊急救命室 非効率なコードを改善せよ!」目次より

感想

僕はアーキテクトという仕事柄、パフォーマンステストを主導することが過去に何回かあったので、SQLのパフォーマンスチューニングもそれなりに経験してきました。業務システムには複雑なSQLがたくさん存在します。業務ロジックそのものに由来する本質的な複雑さもありますが、多くは偶有的複雑さです。機能設計やDB設計のまずさに、そしてSQLを書くスキルの低さによって生み出された、本来不必要な複雑さです。

救命室室長のロバートは、そのようなSQLを「こんなクエリ、淘汰されてしまえばいいのだ!」とバッサリと切り捨てます。(とにかく口が悪いキャラです。よく校閲を通ったなと思うくらい)。

この本の良いところは、まず悪いSQLを提示した上で具体的にどこがいけないのかを示してくれるところです。可読性の観点、パフォーマンスの観点でそのSQLの欠点を指摘します。後者に関しては、全てのSQLに添えられた実行計画によって実際にパフォーマンス難があることが裏付けられています。

この本のサブタイトルは「非効率なコードを改善せよ!」です。可読性の悪さは、SQLの読み手に余計な認知負荷(課題外在性負荷)を与え、開発の効率を落とします。パフォーマンスの問題は、コンピューティングリソースを浪費し、ひいては大切なお金を無駄にしてしまいます。

ロバート室長の口は悪いですが、そのような悪いSQLを駆逐したいという強い想いを感じさせてくれる本だと感じました。

誰に薦めるか?

業務でSQLを書く人には全員読んでほしい一冊です。とくに、CASE式とウィンドウ関数をよく知らない、使いこなせていないという人にとっては必ず役に立つでしょう。現代において、この二つを正しく理解して適切に使いこなすことができるスキルは、プロとして必須の嗜みと言えるのではないでしょうか。

いいなと思ったら応援しよう!

yonekubo
もし記事の内容が何かの参考になりましたら、チップで応援頂けますとありがたいです!