データベースのインデックス(索引)B-treeインデックス

フルスキャン

テーブルに格納されたデータを取り出す方法として、 フルスキャン

  • テーブルの全レコードから検索に一致する行をチェックする

  • 全レコードを確認するため、検索にかかるコストは、レコード数に比例して増える

  • データ追加の場合は、ファイルの末尾に1レコード分のデータが付け足される

全レコードをスキャンするので、レコード数の多いテーブルには向かない。

インデックススキャン

フルスキャンだと効率が悪いので、より速くデータにアクセスするためのアイデアとして、インデックスがある。

全レコード見なくてすむようにするためには? 索引的なことができるように、メタデータをつくる。 ある検索条件にソート済みのメタデータを用意する。メタデータには実際に値があるデータに対するポインタが含まれている。

B-treeインデックス

インデックスの中にも様々な種類がある。その一つがB-treeインデックス - アイデア:ソート済みのデータをいくつかのレンジに分割して、検索範囲を削減する

  • まず対象がどのレンジに含まれるかを検索、その後レンジに含まれる行を全てチェックする

  • PostgreSQLでは検索条件として、先頭の文字列であれば使うことができる

  • Cロケールではない場合、インデックス作成時には特別な演算子クラスが必要