为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DB Version: 0x7000b
【操作系统】:win10
【CPU】:20核心
【问题描述】*:之前在oracle数据库12s可以执行完,现在达梦半个小时都出不来(已更新统计信息)
下面是执行的sql:
执行的sql.txt
执行时间:5978965ms
sql中涉及两张大表:
GAMS_ASSETCARD 42764821条数据
GAMS_ASSETDEPRECDETAIL 182006916条数据
GAMS_ASSETCARD中的索引:
GAMS_ASSETDEPRECDETAIL中的索引:
这边看了达梦的好多文档,没找到解决的方案,希望能在这找到解决方案。
and trunc("t"."JIZRQ", 'ddd')<=timestamp'2021-09-18 00:00:00'
trunc("t"."JIZRQ", 'ddd')<timestamp'2021-09-01 00:00:00'
and trunc("card"."JIZRQ", 'ddd')<timestamp'2021-09-01 00:00:00'
and trunc("bdcard"."JIZRQ", 'ddd')>=timestamp'2021-09-01 00:00:00'
and trunc("bdcard"."JIZRQ", 'ddd')<=timestamp'2021-09-18 00:00:00'
and trunc("temp"."JIZRQ", 'ddd')>=timestamp'2021-09-01 00:00:00'
and trunc("temp"."JIZRQ", 'ddd')<=timestamp'2021-09-18 00:00:00'
。。。。。。。。。。
1.trunc去掉,过滤列上不要有函数,否则有索引也无法走索引
2.修改dm.ini ADAPTIVE_NPLN_FLAG = 0
把完整的sql语句贴出来,把完整的执行计划贴出来。 要通过100%更新统计信息的方式来更新相关字段信息。stat 100 on 表名(字段名);因你这个语句属于比较复杂的语句,建议分段进行优化排查。