インデックス
インデックス全然分かってないです。参考書には書いてあったけ?と思ったので手元にあった二冊の入門書を眺めてみました。
SQL ゼロからはじめるデータベース操作
HAVING句を説明する章のコラムに書いてありました。WHERE句とHAVING句どちらにでも書ける条件はWHERE句に書くべきという流れを汲んだもの。理由は下記の2つ。
- WHERE句とHAVING句の役割の違い
- パフォーマンス
前者は行に対する条件はWHERE句に書きましょうということ。後者は集約前に絞り込んだほうがソートによる負荷が少ない、加えて下記のようにインデックスが使えるからです。
WHERE句が速度の面で有利なもう1つの理由は、WHERE句の条件で指定する列に「索引(インデックス)」を作成することで、処理を大幅に高速化することが可能なことです。
スッキリわかるSQL入門
「データベースをより速くする」という章がありました。インデックスの説明がありCREATE INDEX
、DROP INDEX
、部分一致で使う場合の注意などなど。ちゃんと書いてあった訳ですが全く読んだ記憶がありません。
本書のインデックスでインデックスを調べたのですが、該当ページにこのインデックス自体のページが書いてあってちょっとムカつきました。
おわりに
入門書にも書いてあったりするのですね。より詳しいDB設計の本とか買ってみようかなあと。
…新しい本を買う前に読み直した方が良い本がたくさんありそうですが。