Open3
Postgres関連
インデックス
種類
- B-tree
- Hash
- GiST
- SP-GiST
- GIN
- BRIN
- bloom
なおデフォはB-tree
B-tree
Not to mention
二分木構造でデータを保持して検索効率を上げる
クエリのユースケースとして、基本的な演算子は全て使えると考えて問題ない
例外として、LIKE検索は先頭文字を指定している場合はOKだが、それ以外ではインデックスは使われない
さらにCロケールを使わない場合は、別の方法でインデックスを作成する必要がある
Hashインデックス
指定したカラムの値をハッシュ化して保持する
ハッシュ関数は選べる
メリ
データがうまく分散されていたらほぼO(1)
データサイズが大きいカラムに対してHahインデックスを効果的
64バイトのランダム文字列が大量に保存されたテーブルのインデックスサイズや検索性能の比較を、B-tree vs Hashで行なってる記事がある リンク
デメ
等価演算子しか使えない
データがうまく分散されないと旨みを享受できない
トランザクションログに残らない
つまり
大量のデータが入る想定で、同値検索しかユースケースがなく、かつUUIDv4のようなランダムな値が保持されるカラムの場合に使うと強そう