概述
- 索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。
- 在数据库方面,查询一张表的时候有两种检索方式:
- 第一种方式:全表扫描
- 第二种方式:根据索引检索(效率很高)
- 索引为什么可以提高检索效率呢?
- 其实最根本的原理是缩小了扫描的范围。
- 在数据库方面,查询一张表的时候有两种检索方式:
索引原理
- 索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始,然后读完整个表直到它找出相关的行。表越大,花费时间越多。对于一个有序字段,可以运用二分查找(Binary Search),这就是为什么性能能得到本质上的提高。
- MYISAM和INNODB都是用B+Tree作为索引结构
(主键,unique 都会默认的添加索引)
索引的分类
- 单一索引:给单个字段添加索引
- 复合索引:给多个字段联合起来添加一个索引
- 主键索引:主键上会自动添加索引
- 唯一索引:有unique约束的字段会自动添加索引
应用
- 创建索引:
create index 索引名称 on 表名(字段名);
- 查看索引
show index from 表名;
- 使用索引
explain select sal from emp where sal > 1500;
条件中的sal使用了索引 - 删除索引:
drop index 索引名称 on 表名;