一个简单的查询执行计划走偏-2

贴全一点啊,为啥不贴全呢

hint INL_JOIN

打个卡看看

等待大神

Analyze version 也需要为 2 ,然后收集统计信息。

t表和t2表没有关联条件吗?
这不等于t的部分数据与t2做笛卡尔积吗?

f1_6511 = f1_6757

这个不大敢搞啊,从低版本升上来的,之前尝试在多个版本设置 Analyze version 为2 , 都会导致tidb server OOM

limit 1是有特定的要求吗?

没有要求,只是表示嵌套的子查询返回的数据量很小,且可以快速返回

改成join试试

加个on 1 = 1,试试

limit有可能会产生不稳定的结果集。
可以尝试将in后面的子查询作为一个临时表放到from后面,然后把in改成join看看执行计划会不会更优。

改成inner join试下

SELECT t.*
FROM wind.TB_OBJECT_6757 t
INNER JOIN wind.tb_object_6511 t2 ON f1_6511 = f1_6757
INNER JOIN (
    SELECT REC_ID
    FROM wind_replicator.wind_tb_object_6757_oplog
    LIMIT 1
) AS oplog ON t.ob_object_id = oplog.REC_ID
WHERE f9_6757 = 1 AND f3_6511 = '2010400017';

都是大神

内连接试了吗,感觉不太合理

这么多天了这个问题还在,等待大神

可以把 in 换成 = 试试

改成exist吧

执行计划没变化,继续TB6511全表扫描