针对这条SQL, TiDB 的查询速度较慢,是什么引起的?

因为c和d表关联,存在多对多情况,导致结果集放大了很多结果为4194048,然后在和p3关联,导致大量的p3主键索引读。因为三张表关联最终结果记录不多,但是c,d先关联产生的中间结果很多,说明关联顺序存在问题,楼上那位虾总也是看到这里所以在表连接顺序上帮你调整优化。
但是我猜想他还想通过将数据类型转换成一致的将非等值连接条件下压到存储层过滤,但是这个对于左边通过batch获取记录的情况是无法将非等值条件下压到右侧的,这个行为和mysql的bka(batched key accessed)以及ob的use_batch行为一样。只不过后两者也支持非batch方式,支持非batch主要是他们都是存算一体的,这种实现很多场景下效率并不低。