DB2-LUW优化

问题描述 投票:0回答:1

我正在尝试将旧的DB2查询转换为更有效的方法,但是当我减少执行计划的成本时,我会增加时间。

这是原始代码:

SELECT *
FROM sqm11.table1 r 
LEFT JOIN (SELECT R2.m1, R2.VALUE, MAX(R2.COUNT+0) AS COUNT 
            FROM sqm2.table2 R2 
            WHERE NVL(R2.COUNT,0) <= 5
                 AND R2.STATUS <> 'ok'
                 AND R2.m1 = 'ROLES'
             GROUP BY R2.m1, R2.VALUE) RT ON RT.VALUE =  concatfield1 
WHERE r.PEREFEMPP <> 25 
AND ( r.CARGA > to_date('2020-04-01-00.00.00.0000','yyyy-MM-dd hh24:mi:ss.ff9')
AND r.F_CARGA <= to_date('2020-04-22-00.00.00.0000','yyyy-MM-dd hh24:mi:ss.ff9'))
OR EXISTS (SELECT 1  
                     FROM sqm2.table2 R2 
                     WHERE R2.COUNT <= 5 
                     AND R2.RETRYSTATUS <> 'ok' 
                     AND R2.RETRYsqm1 = 'ROLES'  
                     AND  R2.RETRYVALUE=concatfield1
                     AND  NOT EXISTS (
                          SELECT 1
                          FROM sqm11.table1 r2
                          WHERE r.MO = r2.MO
                          AND r.PP = r2.PP
                          AND r.OL  = r2.OL
                          AND r.TIPO = r2.TIPO
                          AND r.PROD = r2.PROD
                          AND r.INT = r2.INT
                          AND r.ID = r2.ID) WITH UR

我尝试将OR EXIST更改为INNER JOIN,但没有改善时间,也尝试将WITH更改为LEFT JOIN。另外,没有很大的改善。

一些建议?

提前谢谢您

sql query-optimization db2-luw
1个回答
0
投票

您从婴儿床中获得了多少?节省大量成本吗?之前和之后的情况是什么?

此外,为了使成本可靠,您必须具有针对基本数据和索引的体面和更新的统计信息。确保您已收集了正确且更新的统计信息。与分发一起使用和详细选项。

稍后,您可以尝试运行db2advis以获取有关索引的更多建议。

问候

© www.soinside.com 2019 - 2024. All rights reserved.