DB2 中多索引和僅索引訪問路徑的使用和示例


問題:解釋 DB2 最佳化器使用的多索引訪問和僅索引訪問路徑之間的區別。分別給出兩個示例。

解決方案

索引僅訪問和多索引訪問是 DB2 最佳化器為獲取查詢結果而選擇的訪問路徑型別。當 SELECT 查詢中給出的所有列都存在於索引中時,將使用索引僅訪問路徑。在這種情況下,最佳化器無需轉到資料頁來獲取結果,所有資料都可以在索引頁中找到。

例如,ORDERS 表的主鍵為 ORDER_ID,則對於以下 SQL 查詢,DB2 最佳化器將選擇索引僅訪問。

示例

SELECT ORDER_ID FROM ORDERS.

多索引訪問是由 DB2 最佳化器選擇的訪問路徑,當 SQL 查詢的 WHERE 子句對兩個或多個索引具有謂詞時。在這種情況下,將為每個索引(WHERE 子句中的列)提取索引空間/資料空間的結果,然後根據 WHERE 子句中使用的邏輯運算子(AND、OR)聯接結果。

例如,如果 ORDERS DB2 表在 ORDER_ID 上具有主鍵,並在 INVOICE_ID 上構建了一個唯一索引。以下 SQL 查詢將採用多索引訪問路徑。

示例

SELECT ORDER_ID, INVOICE_ID FROM ORDERS WHERE
   ORDER_ID IN (‘Z33476’, ’Z11674’, ‘Z88901’) AND
   INVOICE_ID IN (‘A19908’, ‘A90771’)

更新於: 2020-11-30

227 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.