新インデックスの検証 その3

投稿日: 2002年10月30日

<新インデックスの検証 その3> ペンネーム モンキーターン

今回は、前回作成したオブジェクト( インデックス )の[ 検索時間 ]について
検証を行なう。
キー圧縮インデックス・Index Skip Scanの検索は、[ 検索時間 ]に変化は起
こるのであろうか?

検証スタート!!!

******<前回作成したオブジェクト>*****

検証用テーブル( verification, verification2 )を作成する。

1. create table verification( id number, id2 number ) ;
2. create table verification2( id number, id2 number ) ;

これらのテーブルに
カラムidには 5000件づつ異なる値
カラムid2には 一意な値
を、それぞれ挿入する。

<インデックス>

1. create index id_normal_idx on verification( id ) ;
2. create index id_idx on verification2( id ) compress 1 ;
3. create index id2_normal_idx on verification( id2 ) ;
4. create index id2_idx on verification2( id2 ) compress 1 ;
5. create index comp_normal_idx on verification( id, id2 ) ;
6. create index comp_idx on verification2( id, id2 ) compress 1 ;

***************************************

<今回使用する検索SQL文>

a. select id, id2 from verification where id = 100000 ;
b. select id, id2 from verification where id2 = 100000 ;
c. select id, id2 from verification2 where id = 100000 ;
d. select id, id2 from verification2 where id2 = 100000 ;

検索SQL文 a,bは、インデックス 1,3,5で使用する。
検索SQL文 c,dは、インデックス 2,4,6で使用する。

まずは、インデックスが存在しない場合( Table Full Scan )の検索時間

検索SQL文 a
検索時間 : 2.41秒

検索SQL文 b
検索時間 : 1.23秒

検証用テーブル( verification, verification2 )は、まったく同じテーブル
構成なので、テーブル verificationのデータを使用した。

次に、Normalインデックスの検索時間
インデックス 1, 3, 5を使用

検索SQL文 a
検索時間 : 0.48秒( インデックス 1を使用 )
検索時間 : 0.51秒( インデックス 5を使用 )

検索SQL文 b
検索時間 : 0.35秒( インデックス 3を使用 )
検索時間 : 1.20秒( インデックス 5を使用 )

次に、圧縮したインデックスの検索時間
インデックス 2, 4, 6を使用

検索SQL文 c
検索時間 : 0.54秒( インデックス 2を使用 )
検索時間 : 0.47秒( インデックス 6を使用 )

検索SQL文 d
検索時間 : 0.38秒( インデックス 4を使用 )
検索時間 : 1.27秒( インデックス 6を使用 )

圧縮したインデックスの検索時間は、Normalインデックスとほとんど同じ結果
となった。この結果から圧縮したインデックスは、Normalインデックスの検索
時間と同等レベルである。

ここで、インデックス 5, 6を使用して検索SQL文 b, dを実行した結果を見て
いただきたい。実は、インデックス 5, 6を使用せずにTable Full Scanしてし
まっているのである。
あれれれれ~確かOracle9iからは Index Skip Scanで、where句に第1キーが存
在しなくてもインデックス検索してくれると思っていたのであるが・・・
analyzeもしてあるのに・・・

なぜ?

これは、単純にオプティマイザが Index Skip Scanより Table Full Scanの方
が効率的と判断しただけのことである。

しまった!!
この検証用オブジェクトでは、Index Skip Scanの検証ができない。

と言う事で、
次回は、Index Skip Scanの検索時間の検証を行なう。
また、もう少し負荷の掛かる条件で今回の内容を再度検証してみます。

次回もお楽しみに・・・つづく

以上 今日は、初恋の日らしい・・・。寒さ深まる 茅ヶ崎にて