数据库
首页 > 数据库> > MySQL数据库—— 索引(Indexes)

MySQL数据库—— 索引(Indexes)

作者:互联网

索引(Indexes)


前言

数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。


数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录。

一、什么是索引?有什么用?

索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的。

比如,表中的数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。

select ename,sal from emp where ename = 'SMITH';
当ename字段上没有添加索引的时候,以上sql语句会进行全表扫描,扫描ename字段中所有的值。
当ename字段上添加索引的时候,以上sql语句会根据索引扫描,快速定位。

二、创建索引对象和删除索引对象

create index 索引名称 on 表名(字段名);
drop index 索引名称 on 表名;

三、什么时候考虑给字段添加索引

注意:主键和具有unique约束的字段自动会添加索引。根据主键查询效率较高。尽量根据主键检索。

例:

查看sql语句的执行计划:explain 后面跟查询语(Mysql特有的)

explain select ename,sal from emp where sal = 5000;

在这里插入图片描述
给薪资sal字段添加索引:

create index emp_sal_index on emp(sal);

在这里插入图片描述
再查看查询语句的执行计划:

explain select ename,sal from emp where sal = 5000;

在这里插入图片描述
删除索引:

drop index emp_sal_index on emp;

在这里插入图片描述


四、索引的实现原理

在这里插入图片描述

select ename from emp where ename = 'SMITH';
通过索引转换为:
select ename from emp where 物理地址 = 0x3;

五、索引的分类


六、索引失效

select ename from emp where ename like '%A%';

模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。

标签:ename,sal,Indexes,索引,添加,emp,MySQL,where
来源: https://blog.csdn.net/Sgxlebron/article/details/121652816