聊聊索引失效
作者:互联网
6种索引失效的情况:
1.当我们使用左或者左右模糊匹配时,也就是 like %xx 或者 like %xx% 这两种方式都会造成索引失效
2.当我们在查询条件中对索引使用函数,也是无法走索引的
3.当我们在查询条件中对索引列进行表达式计算时,也是无法走索引的
4.Mysql在遇到字符串和数字比较时,会自动吧字符串转为数字,然后进行比较。如果字符串是索引列,而条件语句中输入参数是数字的话,那么索引列会发生隐式类型转换,由于隐式类型转换是通过CAST函数实现的,等同于对索引列使用了函数,就会导致索引失效
5.联合索引要能正确使用需要遵循最左匹配原则,也就是按照最左优先的方式进行索引的匹配,否则就会导致索引失效
6.在Where子句中,如果Or前的条件列是索引列,而Or后的条件列不是索引列,那么就会索引失效
一.索引存储结构长什么样
索引的存储结构跟Mysql使用哪种存储结构有关,因为存储引擎就是负责将数据持久化到磁盘中,而不同的存储引擎采用的索引数据结构也不会相同
Mysql默认的存储引擎是InnoDB,它采用的B+Tree作为索引的数据结构,在创建表时,InnoDB存储引擎会默认创建一个主键索引,也就是聚簇索引,其他索引都属于二级索引
Mysql的MyISAM存储引擎支持多种索引数据结构,比如B+树索引,R树索引,Full-Text索引,MyISAM存储引擎在创建表时,创建的主键索引默认使用的是B+树索引
虽然InnoDB和MyISAM都支持B+树索引,但是它们数据的存储结构实现方式不同:
InnoDB存储引擎:B+树索引的叶子节点保存数据本身
MyISAM存储引擎:B+树索引的叶子节点保存数据的物理地址
标签:存储,MyISAM,索引,引擎,InnoDB,聊聊,失效 来源: https://www.cnblogs.com/zuiqiangJAVA/p/15840800.html