索引就像一本书的目录,通过目录可以快速找到对应的资源。
在数据库方面有两种检索方式:
第一种:全图扫描
第二种方式:根据索引检索(效率很高)
不能随意添加索引,有维护成本。
需要索引:数据量庞大,该字段很少的DML操作。该字段经常出现早where子句中。
注意:主键和具有unique约束的字段自动添加索引。根据主键查询效率较高,尽量根据主键检索。
查看sql语句的执行计划:explain select …
给sal添加索引:
create index emp_sal_index on emp(sal);
创建索引对象:create index 索引名称 on 表名(字段名);
删除索引对象:drop index 索引名称;
索引底层数据结构:B+tree
原理:通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的物理地址,最终通过索引检索到数据后获得关联的物理地址,通过物理地址定位表中的数据,效率最高。
索引的分类:
单一索引:给单个字段添加索引
复合索引:给多个字段联合起来添加索引
主键索引:主键上会自动添加索引
唯一索引:有unique约束的字段会自动添加索引
索引失效:第一个通配符使用的%,这时候是失效的。