見出し画像

「SQL実践入門 高速でわかりやすいクエリの書き方」を読んでみた感想

業務でRDBMSを扱うことになりました。SQLをちょこちょこ扱うのですが、基本的な要点は知っているものの実務で使えるかというとまだ未熟と感じています。学びなおそうとと技術書を探したところ「SQL実践入門──高速でわかりやすいクエリの書き方」に出会いました。一通り読み終えましたので、感想として残しておきます。

この本は2016年のITエンジニア本大賞 技術書部門ベスト10に選出されています。

SQL実践入門──高速でわかりやすいクエリの書き方

  • 初版:2015年

  • 出版社:技術評論社

  • 著者:ミック

  • ISBN:978-4-7741-7301-6

概要

SQLはデータベース操作に特化した言語で,柔軟にデータを操作できます。ただし,独自のロジックに基づいているため,それを正しく理解しなければ,読みづらくパフォーマンスの出ないSQLになってしまいます。本書では,「条件分岐」「集約」「ループ」「結合」「更新」など日常的に実行する処理の良い書き方・悪い書き方を解説します。その際,データベース内部でどう処理が実行されているかを示す実行計画を読み解くことで,「なぜそう書くと効率が良いのか」「可読性や保守性が向上するのか」を実感を持って理解することを目指します。

目次

第1章 DBMSのアーキテクチャ──この世にただ飯はあるか
第2章 SQLの基礎──母国語を話すがごとく
第3章 SQLにおける条件分岐──文から式へ
第4章 集約とカット──集合の世界
第5章 ループ──手続き型の呪縛
第6章 結合──結合を制する者はSQLを制す
第7章 サブクエリ──困難は分割するべきか
第8章 SQLにおける順序──甦る手続き型
第9章 更新とデータモデル──盲目のスーパーソルジャー
第10章 インデックスを使いこなす──秀才の弱点

感想

実践入門とタイトルで銘打っていることもあり、実務で使える知識が多く盛り込まれていました。SQLを組む上で、その機能を使うとどういう問題が起きるのか、その解決方法は何かをメリット・デメリットを踏まえて解説してあり、非常に勉強になりました。例えば シーケンスオブジェクト・IDENTITY列・採番テーブルはパフォーマンスの点から非推奨だそうです。

一方、実務に焦点を当てていることもあり、SQL・RDBを触ったことのない人が入門本として読むには少し難易度が高いかもしれません。私自身後半に書かれたSQLは能力が足りずパッと理解できませんでした。また、DBの設計には触れていませんので、関わっているプロダクトが要件定義・設計段階であるのなら読むのは後回しで良いかと思います。開発・保守運用の業務をしている方でしたらおススメします。

他に良かった点を述べていきます。

実行計画とセットでSQLを解説している

基本的に本書ではSQL文とその実行計画がセットになっています。同じ実行結果でもSQLの書き方が異なると内部的処理がどう変化するかを実行計画から理解でき、実行計画の重要性を自然と理解できます。この点が他の技術書にはない特徴だと思います。

結合アルゴリズムについて解説している

結合で使われるアルゴリズム、①Nested Loops、②Hash、③Sort Merge について解説しています。オプティマイザが使用する結合アルゴリズムを変更してしまいパフォーマンスが落ちることがあるという知見は重要と感じました。どの結合アルゴリズムを選択するかは、ヒント句によってある程度制御できるそうです。とはいえ、運用を続けると本当に最適なアルゴリズムはデータの状況によって変わってしまうこともあり、実行計画を固定するのにはリスクがあります。

DMBSのアーキテクチャについて解説している

これまで雰囲気でRDBを使っていたためにDBMSがどういう仕組みで動いているのか把握していませんでした。もしかしたら他の技術書でも紹介しているのかもですが・・・
SQLクエリが実行されるプロセスを知ることで、パフォーマンスやボトルネックについて考察できるようになりました。

主にOracle, Postgreの実装例を紹介している

ここは開発で使用している製品によるかと思います(私は当てはまった)。とはいえ、どのDBMS製品にも共通している基本の内容を解説しているので、読む際には問題ないと思われます。

演習問題がある

各章の最後に演習問題があります。私は挑戦していませんが、授業や研修で使う場合は重宝しそうです。

まとめ

  • SQLを軽く学んだ人におすすめ!

  • 業務で使用しているのなら尚良し!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?