PostgreSQLで自動的にインデックスが生成される条件
PostgreSQLのインデックスについて。
インデックスの有無によるクエリ実行速度の違いをベンチマークしていて気がついたんですが、制約によっては勝手にインデックスが生成されるんですね。それに気づかなかったから、実験データが無駄に・・・orz
せっかくなので、その条件を調べてみました。ちなみに生成されるインデックスはすべてB-treeです。使ったのはPostgreSQL 8.3.7。
インデックスが生成される場合
- PRIMARY KEYを指定する
- UNIQUE NOT NULLを指定する
- UNIQUEを指定する
UNIQUE NOT NULLはPRIMARY KEYと同じ意味になります。
インデックスが生成されない場合
- NOT NULLを指定する
- 何も指定しない