在 DB2 SQL 中,OPTIMIZE FOR ROWS 的用途是什麼?它有什麼用處?


OPTIMIZE FOR N ROWS 是一個 DB2 子句,我們可以將其新增到查詢中,以優先檢索前幾行。此子句將使最佳化器能夠選擇最大限度地減少獲取前幾行響應時間的訪問路徑。

OPTIMIZE FOR N ROWS 子句對 SELECT DISTINCT 和 COUNT 函式無效,因為 DB2 需要所有符合條件的行才能獲取 DISTINCT 行或計算行數。OPTIMIZE FOR N ROWS 子句為 DB2 提供了更好的機會來確定訪問路徑。

OPTIMIZE FOR N rows 子句可以用於如下所示的 SQL 查詢中。

示例

SELECT ORDER_ID, ORDER_TOTAL FROM ORDERS
   ORDER BY ORDER_TOTAL DESC
   OPTIMIZE FOR 2 ROWS

我們將使用“FETCH FIRST n ROWS ONLY”來限制返回的行數,並且它不會考慮實際符合條件的行數。

我們可以使用 OPTIMIZE FOR N ROWS 的一個實際場景是 CICS 螢幕,我們只能在其中顯示 5 個訂單的列表。

示例

SELECT ORDER_ID, ORDER_TOTAL FROM ORDERS
   ORDER BY ORDER_TOTAL DESC
   OPTIMIZE FOR 5 ROWS

例如,我們的 DB2 ORDERS 表包含以下資料。

訂單 ID
發票 ID
IRN22345
Z451189
IRN89767
Z451189
IRN67331
Z955189
IRN56902
Z225184
IRN99781
Z896671
IRN09863
Z225184
IRN34119
Z094711
IRN10933
Z189112
IRN67114
Z009117
IRN31990
Z551891

 

我們的 OPTIMIZE FOR 5 ROWS 查詢的結果如下所示。

訂單 ID
發票 ID
IRN99781
Z896671
IRN89767
Z451189
IRN67331
Z955189
IRN67114
Z009117
IRN56902
Z225184

更新於:2020-12-01

876 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告