数据库中的索引
1.什么是索引?
索引相当于一本书的目录,通过目录可以快速的找到对应的资源,但是需要读者注意的是数据的修改,会导致索引需要重新的排序,这时就需要格外的人力进行数据的维护。
2.什么时候加索引
此时读者可能会问加了查询速度变快,但是会造成格外的开销。那在什么时候加索引合适呢?
1. 数据量十分庞大
2. 该字段很少进行DML(数据操作语言)操作
3. 该字段经常出现在where子句中
主键和具有unique约束的字段会自动添加索引
3.如何创建/删除索引对象
<1> 创建索引对象
create index 索引名称 on 表名(字段名)
TIP:索引的名称最好见名知意,如“表名_ 需要添加索引的字段名_index"
<2> 删除索引对象
drop index 索引名称;
4.索引的分类
<1> 单一索引
给单个字段添加索引
<2>复合索引
给多个字段联合起来添加1个索引
<3>主键索引
主键上会自动添加索引
<4>唯一索引
有unique约束的字段上会自动添加索引
5.索引的实现原理
索引底层采用的是BTree数据结构,这里就不再赘述BTree的实现原理了。
通过BTree极大的缩小了扫描的范围,底层索引进行排序、分区。索引会携带着数据在表中的“物理地址”,最终通过索引检索到数据之后,获取相关的物理地址,通过物理地址定位表找到该数据,最终提交。
6.索引如何失效
模糊查询的时候,第一个通配符使用的是%,此时索引是失效的。