MySQL参数eq_range_index_dive_limit
eq_range_index_dive_limit 参数:
- 作用范围:global & session
- 默认值:200
- 最小值:0
- 最大值:4294967295
eq_range_index_dive_limit 参数提供了一个阈值,优化器在估算扫描行数时,会根据这个参数,来决定估算策略。通常优化器有两种估算策略,索引统计和索引下潜(index dives)。
- 索引统计使用的是采样的统计信息,执行速度较快,但是统计数据不准确。
- 索引下潜通过调用引擎接口,能够获取到更准确的估算数据,但是执行成本较高,比较耗时。
优化器在选择策略时,会参考eq_range_index_dive_limit参数的值与where条件中范围相等比较的个数。比如下面两个条件:
col_name IN(val1, ..., valN)
col_name = val1 OR ... OR col_name = valN
in子句中元素的数量,以及 or 子句两边的数量,当这个数量超过 eq_range_index_dive_limit 阈值时,优化器选择使用索引统计,否则优化器选择索引下潜。
当 eq_range_index_dive_limit 设置为0时,优化器始终使用索引下潜。
文章评论