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’)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP