Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


2.3.3 レンジインデクス

レンジインデクスは,レンジインデクスを定義した実表に格納されているデータのうち,次に示す2つの値域(列の値の最小値と最大値)を管理しています。

レンジインデクスが管理する値域の概要について次の図に示します。

図2‒8 レンジインデクスが管理する値域の概要

[図データ]

レンジインデクスを使用すると,探索条件を満たさない値域のデータを格納しているチャンクの検索処理がスキップされます(チャンクのスキップができます)。

また,チャンクのスキップ後に,探索条件を満たす値域のデータを格納しているチャンク内で,探索条件を満たさない値域のデータを格納しているセグメントの検索処理がスキップされます(セグメントのスキップができます)。

不要なチャンクおよびセグメントの検索処理をスキップすることで,その分検索性能が向上します。

メモ

■レンジインデクスと非順序実行方式の関係

非順序実行方式が適用されるSQL文の場合,検索処理の開始時点(カーソルオープン時点)で,レンジインデクスが管理しているチャンク内に格納されているデータの値域を読み込みます。そして,メモリに保存します。検索処理の実行中には,メモリに保存した情報に従って,チャンクのスキップを行うかどうかを判定します。

なお,次の条件をすべて満たすレンジインデクスが対象になります。

  • B-treeインデクスを使用する検索の対象表に定義されているレンジインデクスである

  • チャンクのスキップで使用されるレンジインデクスである

〈この項の構成〉

(1) レンジインデクスの概要

ここでは,セグメントのスキップを例に,レンジインデクスの概要を次の図に示します。

図2‒9 レンジインデクスの概要(セグメントのスキップ)

[図データ]

(2) レンジインデクスの特徴

レンジインデクスは,主に次に示す4つの特徴を持っています。チャンクのスキップができるレンジインデクスの特徴については,「2.14.3 チャンクとレンジインデクスの関係」の「(2) レンジインデクスの特徴(チャンクのスキップ)」を参照してください。

(a) B-treeインデクスやテキストインデクスとレンジインデクスを合わせて使用できる

レンジインデクスを使用してチャンクのスキップを行ったあとで,B-treeインデクスやテキストインデクスを使用できます。B-treeインデクスやテキストインデクスとレンジインデクスを使用した検索については,「2.14.3 チャンクとレンジインデクスの関係」の「(2) レンジインデクスの特徴(チャンクのスキップ)」の「(a) B-treeインデクスやテキストインデクスとレンジインデクスを合わせて使用できる」を参照してください。

メモ

B-treeインデクスやテキストインデクスと合わせて使用する場合,レンジインデクスを使用した検索(セグメントのスキップ)は行われません。

(b) 複数のレンジインデクスを使用できる

複数のレンジインデクスを使用した検索の例を次の図に示します。

図2‒10 複数のレンジインデクスを使用した検索の例

[図データ]

(c) B-treeインデクスやテキストインデクスよりデータ容量が少なくなる

B-treeインデクスの場合は,表の1行に対して1つのインデクスキーを作成します。また,テキストインデクスの場合は,表の1行に対して,そこに含まれる文字列ごとに番号を割り振って管理します。

一方,レンジインデクスの場合は,1セグメントに対して1つの値域を作成します。そのため,レンジインデクスは,B-treeインデクスやテキストインデクスよりデータ容量が少なくなります。

(d) セグメントに格納されているデータの値域の幅によって検索性能が変わる

レンジインデクスを使用した検索では,セグメント内に格納されているデータの値域の幅によって検索性能が変わります。例を次の図に示します。

図2‒11 セグメント内に格納されているデータの値域の幅によって検索性能が変わる例

[図データ]

[説明]

データの格納例1の場合は,検索処理を実行するセグメント数が2つになります。一方,データの格納例2の場合は,値域の重複があり,各セグメントの値域が格納例1に比べて広くなっています。そのため,検索処理を実行するセグメント数が4つになります。このようにセグメントに格納されているデータの値域の幅によって,検索性能が変わります。値域を狭くすると,検索性能が向上します。

(3) レンジインデクスの値域の更新(セグメント)

行の追加,更新を繰り返すと,レンジインデクスの値域が広がり,レンジインデクスの効果が薄れていきます(値域が狭くなることはありません)。また,行の削除を繰り返すと,セグメント内に格納されているデータの値域に比べて,レンジインデクスの値域が広くなり,レンジインデクスの効果が薄れていきます。

レンジインデクスの効果が薄れてきた場合は,対象のレンジインデクスに対してインデクス再作成を実行し,レンジインデクスを作成し直してください。

レンジインデクスの値域が広がる条件を次の表に示します。

表2‒3 レンジインデクスの値域が広がる条件(セグメント)

項番

実行した操作

レンジインデクスの値域が広がる条件

1

行の追加

値域の範囲外の値を追加した場合に,追加行を格納するセグメントの値域が広がります。

2

行の更新

値域の範囲外の値に更新した場合に,更新行を格納するセグメントの値域が広がります。

3

行の削除

値域は広がりません。