索引
什么是索引?作用?
- 索引相当于一本书的目录,通过目录可以快速找到对应资源
- 字段没有加索引,sql语句进行全表查询,扫描字段中所有值
- 字段加索引,sql语句会根据索引扫描,快速定位
- 数据库方面,查询一条记录的时候有两种检索方式
- 1:全表扫描
- 2:根据索引检索
- 为什么可以提高检索效率
- 根本原理是减小了扫描范围
- 注意
- 不可以随意添加索引,索引也是数据库中的对象
- 索引也需要维护,有维护成本
- 表中的数据经常被修改,不适合添加索引,因为数据修改时,索引要修改维护
什么时候考虑加索引
-
数据量庞大
-
该字段很少修改
-
该字段经常出现在where字句中
-
注意
- 主键和具有unique约束的字段会自动添加索引
- 根据主键查询,效率较高
创建和删除索引对象
- 创建
- 语法:create index index_name on tb_name(字段名);
- 删除
- 语法:drop index index_name on tb_name;
explain
- 语法:explain sql语句
- mysql特有
- 作用:查看sql语句的执行计划
索引底层实现原理
-
底层数据结构:B + Tree
- 通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的物理地址
- 通过索引,获取到数据的物理存储地址
- 通过物理地址定位数据:最后不再走表的索引
分类
- 单一索引:给单个字段添加索引
- 复合索引:给多个字段联合起来添加1个索引
- 主键索引:主键上会自动添加索引
- 唯一索引:有unique约束的字段会自动添加索引
索引何时失效
- 模糊查询:第一个通配符使用'%',这时索引失效
相关文章
暂无评论...