索引
- 索引相当于一本书的目录,对于想要查找的一个片段,相比于一页页的查找,按照目录查找的方式快速高效。
- 数据库中,查询表的两种检索方式
- 全表扫描
- 索引检索—因为缩写了扫描范围,效率高
- 索引缺点
- 索引是数据库当中的对象,需要数据库不断维护,有维护成本,当表中的数据经常被修改,此时就不适合添加索引,因为数据一旦修改,索引需要重新排序。
- 添加索引的条件
- 数据量庞大
- 该字段有很少的DML操作。—字段的数据进行修改操作,索引也需要维护
- 该字段经常出现在where当中—用户需求。
主键和具有unique约束的字段会自动添加索引,即根据主键查询效率高!
添加索引
- 创建索引对象
- creat index 索引名称 on 表名(字段);
- 删除索引对象
- drop index 索引名称 on 表名;
- drop index 索引名称 on 表名;
实现原理
- 索引底层使用B tree实现
- 索引失效
- 模糊查询的时候,第一个通配符使用%,这个时候索引是失效的。
- 模糊查询的时候,第一个通配符使用%,这个时候索引是失效的。
索引分类
- 单一索引:给单个字段添加索引
- 复合索引:给多个字段添加索引
- 主键索引:主键上会自动添加索引
- 唯一索引:有unique约束的字段自动添加索引