确实是这样的,下推了
由于这个字段不适合加索引,所以暂时不考虑加索引
目前解决办法是 改写sql如下:
select * from A
inner join B
inner join C
STRAIGHT_JOIN D
where xxx
强制关联顺序,不让优化器提前执行D的查询
这样修改是有效的,但是应该不是最好的
- 有没有更通用的方法,指定不要下推
- 有没有Tidb方面的大佬,跟踪下,根本问题是tidb做了一个负优化;为什么把这么低效的计划判断为 好的计划了
补充信息 A/B/C 有其他比较好的索引过滤条件了;
D表比较大; D.name 不适合建索引,至少目前不考虑。