付録K.2 横分割時の検索範囲
RDエリアの指定種別,およびレコード検索時の基点条件の組み合わせによる検索範囲について,次の表に示します。
項番 |
レコード検索時※1の指定 |
個別開始時の指定 |
検索対象※3 |
アクセス種別 |
検索範囲の説明の参照先 |
||
---|---|---|---|---|---|---|---|
基点条件※2 |
RDエリア指定有効オプション |
RDエリア指定種別※6 |
基点となるRDエリア |
||||
1 |
なし |
− |
'Y' |
− |
指定されたRDエリアを「格納値」※4の昇順に検索します。 |
RDエリア指定検索※5 |
|
2 |
X'00' |
− |
すべてのRDエリアを「格納値」※4の昇順に検索します。 |
||||
3 |
あり |
'Y' |
'Y' |
含む |
条件で指定された検索開始位置からそのRDエリアおよび指定されたRDエリアを「格納値」※4の昇順に検索します。 |
||
4 |
含まない |
条件で指定された「格納値」※4を含むレコード実現値と指定されたRDエリアを「格納値」※4の昇順に検索します。 |
|||||
5 |
X'00' |
− |
条件で指定された検索開始位置からすべてのRDエリアを「格納値」※4の昇順に検索します。 |
||||
6 |
X'00' |
− |
− |
条件で指定された検索開始位置からそのRDエリアだけをインデクスの昇順に検索します。 |
基点検索 |
- 注※1
-
レコードの検索および複数レコードの検索を指します。
- 注※2
-
基点条件は,検索範囲の開始位置を指定するキー条件のことです。キーの条件で指定する条件式の比較記号が「GT or >」,「GE or >=」,「EQ or =」の場合に基点条件が「あり」となります。
例えば,「DBKEY>B」や「DBKEY=B」は検索範囲の開始位置Bが指定されているため,基点条件が「あり」となります。「DBKEY<H」は開始位置が指定されていないので基点条件は「なし」となります。
また,格納条件値分割をしたレコードの場合,基点条件の条件値であるRDエリア分割キー値が,SDBデータベース格納定義のWITHIN句で定義されたRDエリア分割キー値でないときは,エラーとなります。
- 注※3
-
検索範囲の決定は,「表K-1 4V FMBのSDBデータベース検索時の検索範囲決定」,「表K-2 4V AFMのSDBデータベース検索時の検索範囲決定」に記載の契機で行われます。以降のNEXTおよびPRIOR指定の検索は,そのときに決定した検索範囲を対象に行われます。
- 注※4
-
境界値分割の場合,「格納値」を「境界値に指定された値の範囲」と読み替えてください。
- 注※5
-
シーケンシャルインデクスの先頭の構成要素以外を,RDエリア分割キーに指定したレコード型に対してRDエリアを指定して検索する場合,次の条件を満たしていないときは,エラーとなります。
-
RDエリア分割キーに指定した構成要素よりも前のすべての構成要素に対してKEYDEF句を指定している。
-
1.で指定したKEYDEF句ごとのDATA句で定義したキー値は1つだけである。
-
- 注※6
-
4V AFMのSDBデータベースでRDエリア指定種別がX'00'の場合は,この表で決定される検索範囲から,さらに範囲が限定されます。
項番 |
DMLの指定 |
SDB用UAP環境定義の指定 |
検索対象※2 |
検索範囲の説明の参照先 |
|
---|---|---|---|---|---|
基点条件※1 |
subschemaオペランドの-rオプション |
||||
指定有無 |
基点となるRDエリア |
||||
1 |
なし |
あり |
− |
指定されたRDエリアを「格納値」※3の昇順に検索します。 |
|
2 |
なし |
すべてのRDエリアを「格納値」※3の昇順に検索します。 |
|||
3 |
あり |
あり |
含む |
条件で指定された検索開始位置からそのRDエリアおよび指定されたRDエリアを「格納値」※3の昇順に検索します。 |
|
4 |
含まない※4 |
指定されたRDエリアの中で,基点条件より大きくて,最も近い値を検索開始位置として,指定されたRDエリアを「格納値」※3の昇順に検索します。 |
|||
5 |
なし |
− |
条件で指定された検索開始位置からすべてのRDエリアを「格納値」※3の昇順に検索します。 |
- (凡例)
-
−:状態を問いません。
- (補足)
-
レコードの格納の場合,検索範囲を決定しません。
- 注※1
-
基点条件は,検索範囲の開始位置を指定するキー条件のことです。キーの条件で指定する条件式の構成要素がインデクスのキーの先頭構成要素,またはインデクスのキーの構成要素が先頭から連続していてインデクスのキーの構成要素以外を含まない集団項目で,比較記号が「GT or >」,「GE or >=」,「EQ or =」の条件がある場合に基点条件が「あり」となります。
インデクスのキーの先頭構成要素,またはインデクスのキーの構成要素が先頭から連続していてインデクスのキーの構成要素以外を含まない集団項目で,比較記号が「GT or >」,「GE or >=」,「EQ or =」の条件が1つしか指定されていない場合は,その条件が基点条件となります。ただし,条件が複数指定されている場合は,インデクスのキーの先頭構成要素に対応する値が最大の条件が基点条件となります。
インデクスのキーの先頭構成要素に対応する値が最大の条件が1つしか指定されていない場合は,その条件が基点条件となります。インデクスのキーの先頭構成要素に対応する値が最大の条件が複数指定されている場合の基点条件は次のとおりです。
-
比較記号が「GT or >」の条件あり
インデクスのキーの先頭構成要素に対応する値が最大の比較記号が「GT or >」の条件が1つの場合は,その条件が基点条件となりますが,複数の場合は,先に指定されている条件が基点条件となります。
-
比較記号が「GT or >」の条件なし
インデクスのキーの先頭構成要素に対応する値が最大の比較記号が「GE or >=」,「EQ or =」の条件で,先に指定されている条件が基点条件となります。
-
- 注※2
-
検索範囲の決定は,「表K-3 SD FMBのSDBデータベース検索時の検索範囲決定」に記載の契機で行われます。以降のNEXTおよびPRIOR指定の検索は,そのときに決定した検索範囲を対象に行われます。
- 注※3
-
境界値分割の場合,「格納値」を「境界値に指定された値の範囲」と読み替えてください。
- 注※4
-
キーの条件に該当するRDエリアを指定していない場合,NOT FOUNDとなります。
検索対象となる範囲の例を次に示します。
(1) DBKEYの先頭列を指定したときの格納条件指定による横分割の定義例
DBKEYの先頭列を指定したときの格納条件指定による横分割の定義例を次に示します。
WITHIN ( (RDAREA1)TENBAN=(A,G) , (RDAREA2)TENBAN=(B,F) , (RDAREA3)TENBAN=(C,H))
(a) RDエリアの指定にRDAREA1およびRDAREA3を指定した場合
RDエリアの指定にRDAREA1およびRDAREA3を指定した場合,点線枠内が検索範囲となります。分割条件値が昇順となるA→C→G→Hの順に検索します。
(b) すべてのRDエリアを指定した場合
すべてのRDエリアを指定した場合,点線枠内が検索範囲となります。分割条件値が昇順となるA→B→C→F→G→Hの順に検索します。
(c) 基点となる条件に「DBKEY≧Ahi」を指定し,RDエリアの指定にRDAREA1およびRDAREA2を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定にRDAREA1およびRDAREA2を指定すると,点線枠内が検索範囲となります。分割条件値が昇順となるA→B→F→Gの順に検索します。
(d) 基点となる条件に「DBKEY≧Ahi」を指定し,RDエリアの指定にRDAREA2を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定にRDAREA2を指定すると,点線枠内が検索範囲となります。分割条件値が昇順のA→B→Fの順に検索します。
(e) 基点となる条件に「DBKEY≧Ahi」を指定し,RDエリアの指定に0x00を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定に0x00を指定すると,点線枠内が検索範囲となります。分割条件値が昇順となるA→B→C→F→G→Hに検索します。
(f) 基点となる条件に「DBKEY≧Ahi」を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,点線枠内が検索範囲となります。インデクスキーの昇順に検索します。
(g) 基点となる条件に「DBKEY≧Ahi」を指定し,RDエリアの指定にRDAREA2を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定にRDAREA2を指定すると,点線枠内が検索範囲となります。分割条件値が昇順となるB→Fに検索します。
(2) 境界値指定による横分割の定義例
境界値指定による横分割の定義例を次に示します。
DEPENDING ON C1 WITHIN ( (RDAREA1)10, (RDAREA2)20, (RDAREA3)30, (RDAREA2)40, (RDAREA1)50, (RDAREA3))
(a) RDエリアの指定にRDAREA1およびRDAREA3を指定した場合
RDエリアの指定にRDAREA1およびRDAREA3を指定した場合,点線枠内が検索範囲となります。分割条件値の範囲が,1〜10→21〜30→41〜50→51〜となるように検索します。
(b) すべてのRDエリアを指定した場合
すべてのRDエリアを指定した場合,点線枠内が検索範囲となります。分割条件値が,1〜10→11〜20→21〜30→31〜40→41〜50→51〜となるように検索します。
(c) 基点となる条件に「DBKEY≧5hi」を指定し,RDエリアの指定にRDAREA1およびRDAREA2を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定にRDAREA1およびRDAREA2を指定すると,点線枠内が検索範囲となります。分割条件値が,5〜10→11〜20→31〜40→41〜50となるように検索します。
(d) 基点となる条件に「DBKEY≧5hi」を指定し,RDエリアの指定にRDAREA2を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定にRDAREA2を指定すると,点線枠内が検索範囲となります。分割条件値が,5〜10→11〜20→31〜40となるように検索します。
(e) 基点となる条件に「DBKEY≧5hi」を指定し,RDエリアの指定に0x00を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定に0x00を指定すると,点線枠内が検索範囲となります。分割条件値が,5〜10→11〜20→21〜30→31〜40→41〜50→51〜となるように検索します。
(f) 基点となる条件に「DBKEY≧5hi」を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,点線枠内が検索範囲となります。インデクスキーの昇順に検索します。
(g) 基点となる条件に「DBKEY≧5hi」を指定し,RDエリアの指定にRDAREA2を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定にRDAREA2を指定すると,点線枠内が検索範囲となります。分割条件値が,11〜20→31〜40となるように検索します。