Oracleの索引機能について
998106Mar 20 2013 — edited Mar 21 2013いつもお世話になってます。
大変素人質問で申し訳ないのですが、索引機能について個人的に調べており、いくつか疑問が浮かんだ為質問させて下さい。
現在bitmap索引とb*tree索引の機能差を調べています。
①の疑問点
bitmap索引とb*tree索引で解析速度に差がない。
カーディナリティ(値の種類)が増えれば、bitmap索引は動作しなくなり、全表索引に変わるものだと思っていましたが、1千万レコード、カーディナリティを10万にしてもbitmap索引は動作し更にb*tree索引とアクセス速度が変わりませんでした。表に対するupdateなどを行わないと基本的に速度はほぼ同じなのでしょうか?
②の疑問点
1テーブルにName列(一意)とsex列を用意し、1千万レコード挿入しました。
sex列にだけindexを貼り、sex列の500万件を女とし、sex列が女のレコードのみ抜き出す用にしたところ全表走査になってしまいました。
検索対象をsex列のみにしての検索であれば索引が動作するのは確認出来ているのですが、Name列が入ることでなぜ全表走査に切り替わるのかがわかりません
索引は検索対象が多すぎると動作しないとのことですが、それですとカーディナリティが少ないように存在しているbitmap索引の存在価値がないように感じ困っております。。。
※統計情報の再取得は行なっています。
よろしければどなたか、お知恵をお貸し下さい。
使用ツール:OsqlEdit
DB: Oracle Datavase 11g EE
os:win7 64bit