主表在关联子表时关联2个表查询很快但是关联第三个表时数据查询很慢

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.0
【遇到的问题:问题现象及影响】
主表在关联子表时关联2个表查询很快但是关联第三个表时数据查询很慢,无论是单独关联哪个表都很快
但是2个一起就很慢,子表数据量都不大一个2000 一个5000
语句:
select
count(record.id)
from 主表 record
inner join 子表1 as hos on hos.id = record.vaccination_unit_id
inner join 子表2 as town on town.id = hos.admin_area_id
where record.is_delete = 0 and record.vaccine_property_id in (250,253)

【附件:截图/日志/监控】
如下是排除一个关联和两个表都关联的执行时间对比图一个时间仅仅4秒一个时间要到一分钟左右


有一个是不是全部在Tiflash里完成的

大概率是join reorder的问题。
你用explain analyze format='verbose' select xxx from t方式看下执行计划的estCost,我估计优化器也是会显示执行慢(1分钟左右)的那个执行计划的estCost要大,但是优化器还是没有选择成本更低的执行路径,这是因为tidb的join reorder发生在逻辑优化阶段,只会根据结果集的大小来选择哪两张表先做关联,真正的cost计算发生在物理优化阶段,但此时关联顺序已经确定了。

一个走的是 mpp ,另一个没走,另外你说的
“ 如下是排除一个关联和两个表都关联” 啥意思,我看俩执行计划都是一共3张表啊🤔

目前找到问题其中有一张表在加速里面,去掉之后速度就正常了,不知道什么原因引起的,

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