快速入门之MySQL(五) ---索引

1.什么是索引

索引是⼀种特殊的⽂件,包含着对数据表⾥所有记录的引⽤指针。可以对表中的⼀列或多列创建
索引,并指定索引的类型,各类索引有各⾃的数据结构实现。

2.为什么需要索引

数据库中数据存储在磁盘,磁盘的顺序查询速度是很慢的,所以的顺序查找指的是读取磁盘中的数
据⼀条⼀条的进⾏查找。索引可以提⾼查询效率,所以每个表中都会有索引。

3.索引的作⽤

数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍⽬录的关系。
索引所起的作⽤类似书籍⽬录,可⽤于快速定位、检索数据。
索引对于提⾼数据库的性能有很⼤的帮助。

4.索引优缺点和使⽤场景

4.1 索引优点

提⾼数据库查询效率。
减少主从复制从库的延迟时间。

4.2 索引缺点

●索引维护成本很⾼,因为它使⽤的 B+ 树,每次新增、删除数据都需要整理树结构。

●占⽤更多的存储空间(磁盘和内存):每个索引都对应⼀个 B+ 树。

●索引过多会对 MySQL 的优化器造成⼀定的负担。

4.3 使⽤场景

要考虑对数据库表的某列或某⼏列创建索引,需要考虑以下⼏点:
●数据量较⼤。
●且经常查询的列。
满⾜以上条件时,考虑对表中的这些字段创建索引,以提⾼查询效率。

4.4 注意事项

●如果是不常使⽤的列,或经常做插⼊、修改操作的列,不适合加索引,因为添加、删除需要
重新整理索引,速度很慢。
●索引会占⽤额外的磁盘空间,或磁盘空间不⾜时,不考虑创建索引。
●不要在线上环境随意创建索引,创建索引会锁表,线上数量⼤,会导致其他所有接⼝不可
⽤,从⽽造成重⼤事故。

5.索引使⽤

5.1 索引分类

索引的分类有以下⼏种:
主键索引(聚簇索引):⼀种特殊的唯⼀索引,不允许有空值,⼀般是在建表的时候同时创建主
键索引(通过 primary key)。
⾮主键索引(⼆级索引):除主键索引之外的其他索引。
唯⼀索引:不能重复的索引。
普通索引:可以重复也可以为 NULL 的索引。
联合索引:使⽤多个字段联合组成的索引。
注意:创建主键约束(PRIMARY KEY)、唯⼀约束(UNIQUE)、外键约束(FOREIGN KEY)
时,会⾃动创建对应列的索引。

5.2 查看索引

show index from 表名;

5.3 创建索引

5.3.1 创建普通索引

create index 索引名 on 表名(字段名[,字段名2...]);

5.3.2 创建唯⼀索引

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

5.3.3 添加主键索引

alter table table_name add primary key (column);

5.3删除索引

drop index 索引名 on 表名;

6.索引实现原理

索引的实现经历了 3 个阶段的升级:
⼆叉树
缺点:数据⼤之后树很⾼,维护和查询的性能不好。
B 树
缺点:所有节点都保存了数据,加载需要很⻓的时间。
B+ 树
只有叶⼦节点才存储数据,且数据和索引是分离的,所谓的存储的数据,其实是指向数据的地址,
数据量变的⾮常⼩。

7.索引和约束的区别

定义和作⽤不同:约束是保证数据的可靠性的;索引是加速查询的,不是⼀回事。
可以相互创建:当创建了主键、外键、唯⼀约束也就创建了相应的索引;当创建了唯⼀索引,也
就创建了唯⼀约束。

8.聚簇索引和⾮聚簇索引有什么区别

执⾏效率:聚簇索引查询速度更快,因为聚簇索引存储的是数据,⽽⾮聚簇索引存储的是主键
ID,需要进⾏回表查询。
数量上:聚簇索引⼀个表只能有⼀个,⽽⾮聚簇索引可以有多个。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值