InfiniDBはエクステントマップを使用して、アクセス対象列のエクステントの絞り込みを行っていますが、すべてのSELECT処理でエクステントマップが使用されるわけではありません。

例えば、対象列に以下のデータ型を使用している場合は、エクステントマップは使用されません。

エクステントマップが使用されないデータ型
http://infinidb-tech.ashisuto.co.jp/unused-datatypes-on-extentmap/

実行したSELECT処理でエクステントマップが使用されているかどうかは、実行計画、または統計情報を取得することで確認できます。
※実行計画、統計情報の詳細については、本記事の最下部の「参考情報」をご確認ください。

エクステントマップが使用される場合の例

1. クエリを実行

WHERE句のlo_orderkeyはDECIMAL型の列のためエクステントマップが使用されます。


2. 実行計画を確認

「PBE」が617,878となっています。これはエクステントマップによりアクセス対象から除外されたブロック数です。


3. 統計情報を確認

統計情報の「PBE」も同じく617,878となっており、エクステントマップが使用されたことがわかります。

※実行結果を見やすくするために改行しています。


エクステントマップが使用されない場合の例

1. クエリを実行

WHERE句のlo_orderpriorityはCHAR(15)の列のためエクステントマップが使用されません。


2. 実行計画を確認

「PBE」が0となっておりアクセス対象から除外されたブロックがないことがわかります。エクステントマップが使用されない場合はこの値は0になります。


3. 統計情報を確認

統計情報の「PBE」も同じく0となっており、エクステントマップが使用されなかったことがわかります。

※実行結果を見やすくするために改行しています。


参考情報

クエリの統計情報を取得する

SQLの実行計画を取得する