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

FORCE INDEX 并不能选择驱动表。我使用的是7.1版本, 只有hashjoin时才能指定驱动表,indexjoin无法指定。force_index 是强制使用指定索引。如果build端检索出的数据很多>1w推荐使用hashjoin算法。
select count(*) from detail d left join record r on d.order_id = r.id where d.created_at >= ‘2023-12-25 00:00:00’ and d.created_at < ‘2024-03-25 00:00:00’ limit 10 ; 如果r.id是r表的主键, 可以尝试增加一下order by d.order_id
left join连表查询count操作时,有无order by 性能差距很大 - :ringer_planet: TiDB 技术问题 / 性能调优 - TiDB 的问答社区 (asktug.com)

1 个赞