tidb 5.3中use_index_merge hint没有效果



本来想使用merge index(idx_game_code,idx_event_time), 但是tidb-server貌似只会使用到一个索引 idx_game_code , 不清楚是什么情况?

tidb_enable_index_merge 看看参数开启了吗

index_merge 只适合 col1=‘xxx’ or col2=‘xxx’ 这种情况,参考:Optimizer Hints

目前该 Hint 生效的条件较为苛刻,包括:

  • 如果查询有除了全表扫以外的单索引扫描方式可以选择,优化器不会选择 index merge;

开启了

使用and不行么?

意思是设置了hint,也不一定会走hint?

是的,看你默认的执行计划确实比hint消耗还要少啊

不太对,hint不应该是强制走么,优化器应该忽略自己生成的执行计划

谁说的,hint只是提示,并不是强制的,如果cost差异过大,cbo优化器有可能不听你的hint的

:thinking:确实存在hint不生效的情况,可以参照官方文档排查一下
https://docs.pingcap.com/zh/tidb/stable/optimizer-hints#常见-hint-不生效问题排查

1 个赞

嗯,已经按照这个文档排查了,但还是不生效

SHOW WARNINGS;

给出的不生效理由是什么?

另外5.3的话要考虑升级了,已经EOL了。即使确认这是一个bug也没人来修了。

https://cn.pingcap.com/tidb-release-support-policy/

好的,谢谢回复

https://docs.pingcap.com/zh/tidb/stable/sql-plan-replayer

你要不上传一个 plan replayer 我瞅瞅。

在v5.4.0才GA,可能是遇到bug了。