2.3.11 二次インデクス【SD FMB】
SD FMBのSDBデータベースに定義する二次インデクス(レコード型内二次インデクス)について説明します。
なお,SD FMBのSDBデータベースに二次インデクスを定義する場合は,HiRDB Structured Data Access Facility Extension for XDM/SD typeをインストールしておく必要があります。
- 〈この項の構成〉
(1) レコード型内二次インデクス
レコード型内のレコードの検索に使用する二次インデクスを,レコード型内二次インデクスといいます。
(a) レコード型内二次インデクスを作成する目的
- ルートレコード型の場合
-
シーケンシャルインデクスのキー以外の構成要素をキーとして,ルートレコード型内のレコードを検索したい場合,レコード型内二次インデクスを定義します。
レコード型内二次インデクスは,指定した構成要素の値をキーとして,キーの昇順に作成されます。シーケンシャルインデクスとレコード型内二次インデクスのレコードを検索する順序の違いを次の図に示します。
図2‒25 シーケンシャルインデクスとレコード型内二次インデクスのレコードを検索する順序の違い - 子レコード型の場合
-
子レコード型内のレコードを検索したい場合,レコード型内二次インデクスを定義します。
HiRDB/SDでは,レコードを物理的な順序で検索することはできません。このため,子レコード型内のレコードを検索する場合は,レコード型内二次インデクスを定義する必要があります。レコード型内二次インデクスは,指定した構成要素の値をキーとして,キーの昇順に作成されます。
(b) レコード型内二次インデクスを作成するときの留意事項
-
レコードの格納,またはレコードの削除を実行すると,レコード型内二次インデクスが更新されます。また,レコードの更新を実行し,二次インデクスを定義した構成要素を更新した場合も,レコード型内二次インデクスが更新されます。レコード型内二次インデクスの数に比例して,処理のオーバヘッドが増加するため,必要となるレコード型内二次インデクスだけを定義してください。
-
HiRDB/SDでは,インデクスキー値は一意である必要があります。子レコードの順序に関係なく検索する場合は,一連番号を含めたデータベースキーに,レコード型内二次インデクスを定義してください。