一、索引的分类
从三个不同维度对索引分类:
从基础使用方面来看:
主键索引:InnoDB主键是默认的索引,数据列不允许重复,不允许为NULL,一个表只能有一个主键。
唯一索引:数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。
普通索引:基本的索引类型,没有唯一性的限制,允许值为NULL。
组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并。
二、为什么使用索引会加快查询?
传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,MySQL需要将表的数据从头到尾遍历一遍。
在添加完索引之后,MySQL一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历,在比较小的索引数据里面进行查找,然后映射到对应的数据,能够大幅提高查找效率。
这和我们通过书的目录去查找对应的内同道理相似。