• 明明有个索引“感觉”应该被选中,EXPLAIN时在possible_keys也有它,但最后没被选中,可能的原因有哪些?


    明明有个索引“感觉”应该被选中,EXPLAIN时在possible_keys也有它,但最后没被选中,可能的原因有哪些?
    
    
    一、执行计划如下:
        desc select * from t1 where c2 >= 2;
            key: NULL
            key_len: NULL
            rows: 14
            filtered: 92.86
            Extra: Using where
    
    
    二、可能的原因如下:
        隐式转换。
        表碎片,因为表的碎片率过高。
        根据索引读取到的数据在整个表中的数据占比超过30%。
        统计信息没有及时更新。
    
    
    三、上述执行计划的结果是:
        预计扫描的行数为14行,filtered(是指返回结果的行占需要读到的行的百分比)的值为92%。
        当前执行计划中filtered值92% 说明根据索引查询获取的结果占整张表的92%,在MySQL中根据索引查询的结果占整张表的数据30%则不会走索,所以不会走索引。
        另外,也有可能是表的碎片率过高或隐式转换导致的。
  • 相关阅读:
    前端面试题
    Less 中的嵌套规则与 & 符号的使用
    组件的生命周期
    222
    221
    twemproxy代理memcache(3)
    memcache数据迁移与解决方案(2)
    mencache的原理与应用(1)
    yield推荐,理解协程的最佳入口
    上下文管理器的实现
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13158764.html
Copyright © 2020-2023  润新知