(1)索引的感性理解:MySQL中的索引之于表就像书本的目录一样,可以极大的提高搜索的速度。
(2)索引通常使用在数据量比较大的业务场景。
(3)设置为索引的字段不应该或者几何不会进行DML操作,如主键索引。
(4)索引的本质就是缩小了数据扫描的范围,对数据进行查询操作的时候,数据库会先判断该字段是否是索引,如果是索引,则通过索引找到该条数据的物理地址,再通过物理地址取出该数据内容,底层的原理是B+ 树。通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是最高的。
(5)索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中 的对象,也需要数据库不断的维护。是有维护成本的。比如,表中的数据经常被修改
这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。
(6)索引的分类:
单一索引:给单个字段添加索引
复合索引: 给多个字段联合起来添加1个索引
主键索引:主键上会自动添加索引
唯一索引:有unique约束的字段上会自动添加索引