« Informixでの正規表現 | トップページ | ウィンドウ関数が使えるバージョン »

2015.12.02

複合インデックス非推奨

インデックスの使用に当たって、よく言われるのが
「同一テーブルへのアクセスは1つのインデックスしか使われない」
というアレ。
これは正しいけど正しくないよ、という内容です。

多くのRDBMSにとってこれは真なので、どうしても複合的な条件にしないとカーディナリティを担保できないテーブルに対して、泣く泣く複合インデックスを作ったりしたりするわけであるが。

PostgreSQLの場合はBitmapスキャンが採用できるため、複合インデックスではなく単値のインデックスを複数もつことが推奨されているのである。
しかもこれVer8.1から実装されてるじゃないですかいorz

でBitmapスキャンはかなり精度がよいので、明らかに複合インデックスが効果を発揮する場面でなければあえて設定する必然性は低い。ずばっとはまった複合インデックスは単値インデックスを複数使ったbitmapスキャンより速いこともあるけれど、通常プランナが選択するインデックス使用方針は十分有効である。

MySQLなどの1テーブルからの問い合わせには1インデックスしか使われない系を使っていた人が移ってくるときはちょっと注意が必要である。

|

« Informixでの正規表現 | トップページ | ウィンドウ関数が使えるバージョン »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/62793560

この記事へのトラックバック一覧です: 複合インデックス非推奨:

« Informixでの正規表現 | トップページ | ウィンドウ関数が使えるバージョン »