一样的sql,limit不同执行计划就不一样了

【 TiDB 使用环境】生产环境4013
【复现路径】做过哪些操作出现的问题

【遇到的问题:问题现象及影响】
一样的sql,limit 100很快,limit10就慢。执行计划就不一样了

执行计划发一下?看看哪里不一样

limit 10直接全表扫描

limit 100 的

索引问题?统计信息健康度是100%吗?

忘记说了,这个问题背景是两个表连接强制走主键了,做了执行计划绑定tor FORCE INDEX (primary) on tod.order_id = tor.id,用的limit 100;这个语句绑定的,然而limit 15 好像没有用上,但是我绑定limit 15,会覆盖limit 100的

这是绑定的执行计划

如果sql binding 不带limit ,sql能走绑定计划吗?

健康度没有问题,我试一下

更奇怪了,我想去从库试一下,发现同样查询从库都快,而且执行计划都是正确的,自己走了主键连接

:joy: 要不重新收集下统计信息,健康度弄到100%再试试?

都是刚收集过,执行的,主要这两张表数据更新超级频繁,很难100%

你主库上还有其他的binding吗?检查一下走没走执行计划,走的是哪一个执行计划?

从库上是没有绑定计划吗?要不把绑定计划去了试试 :upside_down_face:

mark,学习一下

确认一下哈,看执行计划,你的SQL里面有 join,我理解绑主键做全表 join 应该会慢才对(因为没有走索引),那根据您提问,我感觉是 sql binging 为啥没生效的问题吧?

没有了,这个语句就这一个

从库不用绑定走的一样

就是和这个设置有关系的。都去了应该都慢才对。