判断条件有一个为空就会很慢,除了放在子查询有其他解决方案吗?

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

加不加这行性能差别巨大
案列.sql (4.7 KB)

不加空执行计划.xlsx (12.8 KB)
加空执行计划.xlsx (13.6 KB)

把涉及的表手工分析下再试试

先用 with 弄个集合出来,在进行过滤会快点的

收集统计信息试试

你不加判断的话,执行计划里面连atdpersontimesheet这个表都没有?

explain 看看具体的执行计划

删掉的应该不仅仅是一个where条件吧,表也没了。拿错执行计划了?


再检查下sql是不是发错了

:thinking:这里是不是可以把sheet表的left join换成inner join就可以了?

那个条件直接影响索引的使用

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。