MySQL---索引优化与查询优化

发布时间 2023-07-10 16:10:35作者: anpeiyong

 

  

  

索引失效案例

  

全值匹配我最爱

  

    当where条件的所有字段 都有 索引完全匹配时,效率最高

最左前缀规则(联合索引)

  

    联合索引,在检索数据时从联合索引的最左侧开始匹配

  

主键插入顺序

  

  

计算/函数/类型转换(自动或手动) 导致索引失效

  

 

  

    第1个SQL,要先进行计算,不会使用到索引

    第2个SQL,等值匹配,使用索引

类型转换(自动或手动) 导致索引失效

  

    name为varchar类型,第1个SQL会先将name进行类型转换,不会使用索引

范围条件右边的列索引失效(联合索引)

    <, <=, >, >=, between...

    联合索引的 范围条件字段 右侧字段 索引失效

  

    由于where的classId是范围条件,仅使用 联合索引的 age+classId(key_len = 10)

不等于(!=或<>)索引失效

  

    均索引失效

is null使用索引、is not null无法使用索引

  

  

like以%开头索引失效

  

    第1个使用索引、第2个不使用索引

  

or前后存在非索引列,索引失效

  

数据库和表的 字符集 统一使用utf8mb4