一、索引作用
1、快速定位,目录的作用
2、唯一索引进行唯一约束
二、索引分类
1、普通索引:一般的索引,没有什么特殊
2、唯一索引:唯一性约束,不允许其中任何两行具有相同索引值的索引,一个表可有多个唯一索引
3、主键索引:唯一性约束,主键,一个表只有一个主键索引
4、组合索引:多个字段组合而成的索引
三、索引实现
1、B-Tree:平衡多路查找树,每个节点上都有一个或多个键和数据
注:实际采用B+树实现,与B树区别在于,非叶子结点只存一个或多个键值,所有的数据都存在叶子结点上,详见:B树与B+树实现原理
2、Hash:对索引字段进行hash,value存储数据
3、Full-Text:全文索引以词为基础的,只能加在char、varchar和text的字段上,用于like对前缀匹配场景
4、R-Tree:一种空间搜索的动态索引结构
四、索引失效情况
1、条件中有or
2、like中“%”在前
3、使用 <> 、not in 、not exist、!=
4、使用内部函数
5、对索引列进行运算
6、隐式转换
7、单独引用复合索引里非第一位置的索引列
8、字符型索引字段,未使用括号将数据括起来
9、当全表扫描比使用索引更快时