SQLパフォーマンス詳解 を読んだ
どういう本か
データベースのインデックスについて解説している本。Bツリーインデックスの内部構造、効率よくインデックスを使う方法、実行計画の見方などが書いてある。Oracleデータベースの用語を使って書かれているけど、「原理は他のデータベースにも同じように適用できます。」と書いてあった。
この本はWeb上で無料で読めますが、私は9.95ユーロでPDFを買って読みました。
いいところ
インデックスの内部構造の説明が最初の章にある
これを頭に入れてから、それでは実際のSQL文においてインデックスがどう使われるでしょうか?という以降の文章を読むとスッと入ってくる感じがした。
視野が広がった
この本はOracleデータベースを基本として書かれている。自分はMySQLの知識しか持ってないので知らないことがいろいろ出てきて視野が広がった。例えば以下のようなことを初めて知った。
- カラムに関数を適用した結果にインデックスを張ることができる
- 条件にマッチする行だけを含むインデックスを作れる
- 結合処理(JOIN)のアルゴリズムが3つある。それぞれによって最適なインデックスは異なる
- 入れ子ループ(nested-loop join)
- ハッシュ結合
- ソートマージ
- Oracleの実行計画を表示するとPredicate Information(述語情報)というのが表示される
- コスト値
- インデックスを使った group by のアルゴリズム
書いてみたらたくさんあった。
まとめ
MySQLのインデックスに関する知識はインターネットで「MySQL インデックス 入門」とかでググると素晴らしい解説がいろいろ見つかるのでそれで勉強してもいいと思いますが、それよりもう少し詳しく知りたい人は読むと得るものがあるかもしれません。私はありました。
おまけ。この本を読んでいるときに INDEX FULL SCANを狙う - MySQL Casual Advent Calendar 2011 - SH2の日記 を読んだら「わかる...わかるぞ!」という気持ちになって楽しかったです。