当前位置 : 主页 > 编程语言 > 其它开发 >

MySQL索引相关

来源:互联网 收集:自由互联 发布时间:2022-05-30
索引索引(记录,不断更新..) 索引相当于一本书的目录,通过目录可以快速地对应相对的资源。在数据库方面,查询一张表的时候有两种检索方式: 全表扫描 根据索引检索(效率很
索引 索引(记录,不断更新..)

索引相当于一本书的目录,通过目录可以快速地对应相对的资源。在数据库方面,查询一张表的时候有两种检索方式:

  • 全表扫描
  • 根据索引检索(效率很高)

索引虽然可以提高检索的效率,但是在决定是否添加主键还是要仔细分析情况,不能随意添加,例如:当数据量较小时就不必添加索引,因为索引也是数据库的对象,需要数据库不断维护。是有维护成本的。还有当数据库中的数据需要频繁改动时就不适合加索引,因为一旦数据发生改动,索引也需要做对应的修改,进行维护。

添加索引是给某个字段,或者某些字段添加索引。

创建索引:
create index 索引名 on 表名(字段名);
删除索引
drop index 索引名 on 表名;
什么时候考虑添加索引
  • 当数据量庞大时。
  • 该字段很少的DML操作。
  • 该字段经常出现在where 语句之后。

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

查看sql语句的执行计划!!??

索引的底层实现

索引底层使用B +Tree实现

原理

通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,
最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率
是最高的。
select ename from emp where ename = 'SMITH';
通过索引转换为:
select ename from emp where 物理地址 = 0x3;

分类
单一索引:给单个字段添加索引
	复合索引: 给多个字段联合起来添加1个索引
	主键索引:主键上会自动添加索引
	唯一索引:有unique约束的字段上会自动添加索引
索引的失效

select ename from emp where ename like '%A%';
模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。

上一篇:跳动的“loading”,个个都很惊艳!
下一篇:没有了
网友评论