执行计划不正常

【概述】 SQL执行计划不正常,导致语句执行过慢

【背景】 其它worksheet表的健康分为99

【TiDB 版本】 V5.4.1

常规来说应该先按照 create_time进行过滤,结果集为500行。然后再进行排序,但此执行计划为先全量排序,再进行过滤,导致SQL执行过慢。

相关索引:

count(1)是测试用的不是真实业务要查询的吧/? 第一列是什么,你把order by 去掉试试

都 count 了,为啥还要加 order by ?

这个执行计划是先全表扫描,然后根据过滤条件进行过滤,再进行的排序,是你预期的顺序呀,只不过这个执行计划没有走索引,而且根据你说的结果集为500,从执行计划中看到的预期结果集条数是3.94,相差挺大的,可能是统计信息不准导致的

你这个sql主要慢在全表扫描把,走全表扫描很像oracle谓词过界,可以再收集下统计信息测试一下
你主要是测什么,type都等于了为什么还要order by:joy:

原始语句:
select * from worksheet where type = 1 and create_time >= ‘2022-10-13 11:52:25’ order by create_time desc,type limit 10

analyze 重新收集统计信息,问题解决,但表的健康分是99。

对的,但健康分是99,这个就不好预防了

这个就类似于oracle的谓词过界,最新时间的查询就可能执行计划不准确

在执行计划不准确的情况下,可以考虑绑定执行计划,参考这里: 执行计划管理 (SPM) | PingCAP Docs

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