在 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 |
廣告