インデックスも奥深い

晴れ。久しぶりに実家に戻った。北総線をはさむと実家もだいぶ足が遠のいてしまう。

AMプロジェクトはPostgresを使わせてもらっているが、DBのあるテーブルが70万レコードに達していて、このテーブルに絡む改修を今やっている。これにカテゴリーを表すtypeカラムを追加し、type=0が68万件、type=1以降が2万件程度の偏った分布をしていて、この2万件の方を主に操作したい。typeカラムにbTreeインデックスを張っただけだとSELECTに30秒もまたされてしまう。こういうケースは今までは苦し紛れにキャッシュテーブルを作ってサーチ件数を絞っていたが、Joinに気を使う必要があったので根本解決にはなっていなかった。二重データも気持ち悪い。試行錯誤していると部分インデックスなる機能を発見した。これは今回のようなケースで特に有効で、70万レコードのうちの条件に合う、この場合だと type != 0 のような条件に合うもののみを集めたインデックスを作ることができるそうだ。すごい。そう、こういう物を探していた!これを使ったら先のSELECT文も0.3秒と万々歳な結果になった。部分インデックスすごい。



[ 編集 | 凍結 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]
Last-modified: 2010-01-04 (月) 23:06:19 (4182d)