DB2 SQL中OPTIMIZE FOR ROWS的目的是什么?有什么用?
OPTIMIZEFORNROWS是一个DB2子句,我们可以在查询中添加该子句以仅优先检索前几行。此子句将使优化程序选择访问路径,以最小化获取前几行的响应时间。
OPTIMIZEFORNROWS子句对SELECTDISTINCT和COUNT函数无效,因为DB2将需要整个限定行才能获取DISTINCT行或COUNT行数。OPTIMIZEFORNROWS子句为DB2提供了建立访问路径的更好机会。
如下所示,可以在SQL查询中使用OPTIMIZEFORNrows子句。
示例
SELECT ORDER_ID, ORDER_TOTAL FROM ORDERS ORDER BY ORDER_TOTAL DESC OPTIMIZE FOR 2 ROWS
我们将仅使用“FETCHFIRSTnROWS”限制返回的行数,并且不会考虑合格行的实际数。
我们可以使用OPTIMIZEFORNROWS的实际情况是CICS屏幕,在这里我们只能显示5个订单的列表。
示例
SELECT ORDER_ID, ORDER_TOTAL FROM ORDERS ORDER BY ORDER_TOTAL DESC OPTIMIZE FOR 5 ROWS
例如,我们的DB2ORDERS表具有以下数据。
我们的OPTIMIZEFOR5ROWS查询的结果将如下所示。