
- IMS DB 基礎教程
- IMS DB - 首頁
- IMS DB - 概述
- IMS DB - 結構
- IMS DB - DL/I 術語
- IMS DB - DL/I 處理
- IMS DB - 控制塊
- IMS DB - 程式設計
- IMS DB - Cobol 基礎
- IMS DB - DL/I 函式
- IMS DB - PCB 掩碼
- IMS DB - SSA
- IMS DB - 資料檢索
- IMS DB - 資料操作
- IMS DB - 二級索引
- IMS DB - 邏輯資料庫
- IMS DB - 恢復
- IMS DB 有用資源
- IMS DB - 問題與解答
- IMS DB - 快速指南
- IMS DB - 有用資源
IMS DB - 二級索引
當我們想要訪問資料庫而不使用完整的連線鍵,或者不想使用順序主欄位時,使用二級索引。
索引指標段
DL/I 將指向索引資料庫段的指標儲存在單獨的資料庫中。索引指標段是唯一型別的二級索引。它由兩部分組成:
- 字首元素
- 資料元素
字首元素
索引指標段的字首部分包含指向索引目標段的指標。索引目標段是可以使用二級索引訪問的段。
資料元素
資料元素包含來自已構建索引的索引資料庫中段的鍵值。這也被稱為索引源段。
以下是關於二級索引需要注意的關鍵點:
索引源段和目標源段不必相同。
當我們設定二級索引時,它會由 DL/I 自動維護。
DBA 根據多個訪問路徑定義許多二級索引。這些二級索引儲存在單獨的索引資料庫中。
我們不應該建立過多的二級索引,因為它們會給 DL/I 帶來額外的處理開銷。
二級鍵
需要注意的幾點:
在索引源段上構建二級索引的欄位稱為二級鍵。
任何欄位都可以用作二級鍵。它不必是段的順序欄位。
二級鍵可以是索引源段內單個欄位的任意組合。
二級鍵值不必唯一。
二級資料結構
需要注意的幾點:
當我們構建二級索引時,資料庫的表觀層次結構也會發生變化。
索引目標段成為表觀根段。如以下影像所示,即使 Engineering 段不是根段,它也成為根段。
二級索引引起的資料庫結構重排稱為二級資料結構。
二級資料結構不會對磁碟上存在的主物理資料庫結構進行任何更改。這只是在應用程式程式前面更改資料庫結構的一種方式。

獨立 AND 運算子
需要注意的幾點:
當 AND(* 或 &)運算子與二級索引一起使用時,它被稱為相關 AND 運算子。
獨立 AND(#)允許我們指定使用相關 AND 無法實現的限定條件。
此運算子只能用於索引源段依賴於索引目標段的二級索引。
我們可以使用帶有獨立 AND 的 SSA 來指定根據兩個或多個相關源段中的欄位處理目標段的出現。
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 ')'.
稀疏排序
需要注意的幾點:
稀疏排序也稱為稀疏索引。我們可以使用二級索引資料庫和稀疏排序從索引中刪除一些索引源段。
稀疏排序用於提高效能。當索引源段的一些出現次數未使用時,我們可以將其刪除。
DL/I 使用抑制值或抑制例程或兩者來確定是否應為段建立索引。
如果索引源段中順序欄位的值與抑制值匹配,則不建立索引關係。
抑制例程是使用者編寫的程式,它評估段並確定是否應為其建立索引。
當使用稀疏索引時,其功能由 DL/I 處理。我們不需要在應用程式程式中為此做特殊規定。
DBDGEN 需求
如前面的模組中所述,DBDGEN 用於建立 DBD。當我們建立二級索引時,會涉及兩個資料庫。DBA 需要使用兩個 DBDGEN 建立兩個 DBD,以在索引資料庫和二級索引資料庫之間建立關係。
PSBGEN 需求
為資料庫建立二級索引後,DBA 需要建立 PSB。程式的 PSBGEN 在 PSB 宏的 PROCSEQ 引數中指定資料庫的正確處理順序。對於 PROCSEQ 引數,DBA 對二級索引資料庫的 DBD 名稱進行編碼。