在 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 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告