为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:
【CPU】:
【问题描述】*:IF判断,导致执行计划不同,查询速度相差很大
explain SELECT 1 FROM bom b WHERE b.del = 1
AND ( IF( :bomStartTime is NULL,1=1,b.create_time >= (:bomStartTime)))
AND ( b.create_time < add_days( :bomEndTime, 1 ))
explain SELECT 1 FROM bom b WHERE b.del = 1
AND ( b.create_time >= (:bomStartTime))
AND ( b.create_time < add_days( :bomEndTime, 1 ))
如果表上 create_time 字段里没有NULL值,可以试着把IF条件修改一下,看看是否有效果
AND b.create_time > NVL(:bomStartTime ,TO_DATE('19700101','YYYYMMDD'))
您好 能不能提供表结构和数据验证一下
盲猜可能是 if语句的seek(null,end) 行数较多
而后面没有if, seek(begin,end)行数出来较少