Ims Db 简明教程
IMS DB - Secondary Indexing
当我们想访问数据库而不使用完整的串联键,或者当我们不想使用顺序主键字段时,将使用辅助索引。
Index Pointer Segment
DL/I 在单独的数据库中存储指向索引数据库段的指针。索引指针段是辅助索引中唯一一种类型。它由以下两个部分组成 -
-
Prefix Element
.
-
Data Element
Secondary Keys
重点注意事项:
-
建立辅助索引的索引源段中的字段被称为辅助键。
-
任何字段均可用作辅助键。它不必是段顺序字段。
-
辅助键可以是索引源段内单个字段的任何组合。
-
辅助键值不一定是唯一的。
Secondary Data Structures
重点注意事项:
-
当我们构建辅助索引时,数据库的明显层次结构也会改变。
-
索引目标段变为明显的根段。如下图所示,即使工程段不是根段,它也变为根段。
-
由辅助索引造成的数据库结构的重排被称为辅助数据结构。
-
辅助数据结构不会对磁盘上存在的数据库主物理结构做出任何更改。它只是一种在应用程序之前改变数据库结构的方法。
Independent AND Operator
重点注意事项:
-
在辅助索引中使用 AND (* 或 &) 运算符时,它称为受控 AND 运算符。
-
独立的 AND (#) 允许我们指定依赖 AND 不可能完成的限定条件。
-
该运算符只能用于索引源段依赖于索引目标段的辅助索引。
-
可以使用 SSA 编码独立 AND 来指定,根据两个或多个依赖源段中的字段来处理目标段的发生。
01 ITEM-SELECTION-SSA.
05 FILLER PIC X(8).
05 FILLER PIC X(1) VALUE '('.
05 FILLER PIC X(10).
05 SSA-KEY-1 PIC X(8).
05 FILLER PIC X VALUE '#'.
05 FILLER PIC X(10).
05 SSA-KEY-2 PIC X(8).
05 FILLER PIC X VALUE ')'.
Sparse Sequencing
重点注意事项:
-
稀疏排序也称为稀疏索引。我们可以使用稀疏排序从索引中删除一些索引源段,使用辅助索引数据库。
-
稀疏排序用于提高性能。当不使用索引源段的一些发生时,我们可以将其删除。
-
DL/I 使用抑制值、抑制例程或两者来确定是否应对段进行索引。
-
如果索引源段中顺序字段的值与抑制值相匹配,则不会建立索引关系。
-
抑制例程是评估段并确定是否应为其编制索引的用户编写的程序。
-
当使用稀疏索引时,它的函数由 DL/I 处理。我们不需要在应用程序中为它做出特殊规定。