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