Hitachi

ノンストップデータベース HiRDB Version 10 解説


3.4.1 インデクスの基本構造

インデクスは,キーとキー値から構成されます。列の内容を示した列名のことをキーといいます。また,列の値のことをキー値といいます。表を検索するときのキーとなる列にインデクスを作成しておくと,表の検索性能が向上します。インデクスを作成する方がよい列を次に示します。

また,HiRDBから提供されるインデクスは,B-tree構造になっています。B-tree構造中の最上位のインデクスページをルートページ,最下位のインデクスページをリーフページ,中間のインデクスページを中間ページといいます。ルートページと中間ページは下段のページを指しています。リーフページはキー値と行識別子を持っています。

インデクスのB-tree構造を次の図に示します。

図3‒24 インデクスのB-tree構造

[図データ]

〔説明〕

段数3で「商品コード」列にインデクスを作成した場合の,「SCODE」をキーとし,「101L〜671M」をキー値とするB-tree構造のインデクスです。

〈この項の構成〉

(1) インデクスの効果

インデクスはB-tree構造であり,キー値を昇順又は降順に格納しているため,条件を満たすキー値を効率良く検索できます。また,そのキー値に対応する行識別子を持っているため,条件を満たす行を効率良く取り出せます。

(2) 単一列インデクスと複数列インデクス

インデクスには,単一列インデクスと複数列インデクスがあります。表の一つの列で作成した一つの列のインデクスを単一列インデクスといいます。単一列インデクスは,一つの列をキーにして検索する場合に指定します。表の複数の列で作成した一つのインデクスを複数列インデクスといいます。複数列インデクスは,次に示す場合に指定してください。

(3) コストベースの最適化

ある表にインデクスが複数作成されている場合,HiRDBは表の検索で指定された探索条件を基にして,最もアクセスコストの少なく,最適と判断したインデクスを優先して選択します。このようにHiRDBが最適と判断したインデクスを優先して選択する処理をコストベースの最適化といいます。HiRDBが判断するアクセスコストには,次に示すものがあります。

HiRDBはコストベースの最適化をするため,表の検索性能が向上します。特に,探索条件を指定したSQLを実行する場合でも,表の検索性能を低下させません。このため,インデクスのアクセスの優先順位を意識しないでUAPを作成できます。ただし,HiRDBに最適なインデクスを使用させるには,探索条件が指定された列にインデクスが定義されていることが前提になります。

(4) インデクスの定義

どの表のどの列をインデクスとするかは,定義系SQLのCREATE INDEXで定義します。どのような列にインデクスを定義すれば検索性能が向上するか,などのインデクスの設計については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。