【概述】 SQL执行计划不正常,导致语句执行过慢
【背景】 其它worksheet表的健康分为99
【TiDB 版本】 V5.4.1
常规来说应该先按照 create_time进行过滤,结果集为500行。然后再进行排序,但此执行计划为先全量排序,再进行过滤,导致SQL执行过慢。
相关索引:
【概述】 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
原始语句:
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的谓词过界,最新时间的查询就可能执行计划不准确
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。