主从2个数据库同一个sql执行计划不一样

【 TiDB 使用环境】生产环境 /测试/ Poc
我这有一个简单sql 单表查询在主库中默认不走索引全表扫描了,在从库中执行默认就走索引,请问这个是为什么


首先看下主库两个索引都有吗?另外analyze table 收集下主库表的统计信息。

2个库都有索引,analyze做了好几次结果都一样


看看select * from INFORMATION_SCHEMA.TABLES 主备库,统计的table_rows 等等数字是不是差不多

数据量一样的 主从同步正常的

主从的版本一样吗?

一样的 主要问题是为什么主库不走索引

explain format=‘verbose’ select * from 使用这个看下优化器评估的代价呢

难道全表扫描比走索引还更优?

执行计划缓存 ?试试sql hint select /*+ ignore_plan_cache() */ * from t where a = ?';

看看这个https://docs.pingcap.com/zh/tidb/stable/explain-index-merge

2 个赞

忽略了缓存查询还是不走索引

在使用上index_meger 看下代价呢?比较下两者的cost

SET GLOBAL tidb_enable_index_merge = ON; 我们数据库是4.0升级到5.4的 默认不开启索引合并功能 现在设置开启 那个sql就走索引了

1 个赞

主备库建表语句一样吗?看看是不是都是clustered或者都不是

表结构和统计信息一样?

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