一文搞懂MySQL中索引的概念、实现和原理

本文详细阐述了索引在MySQL中的重要性,比较了InnoDB和myISAM引擎的差异,介绍了创建、选择和维护索引的技巧,以及索引与约束的区别。特别关注了适用场景、注意事项和索引类型如普通索引、唯一索引和主键索引的应用。
摘要由CSDN通过智能技术生成

1、索引的特点

包含了数据记录的指针(相当于书的目录)
索引的使用大大提高了查询效率,避免了顺序查询

2、mysql数据库引擎

基于MySQL5.5以后默认的数据库引擎InnoDB
基于MySQL5.5以前的默认的数据库引擎myISAm
区别
1、稳定性不同:InnoDB引擎支持事务(保证了数据的稳定性)比myISAm好,myISAm不支持事务
2、性能不同:myISAm性能高,InnoDB不如myISAm

3、索引的优点

①避免顺序查询,可以直接将查询的访问定位出来,提出
②可以将数据库中的关键索引信息存储到内存中,速度更快

4、索引的缺点

①增加了使用(维护)成本(B+树)需要整理树结构
②增加存储成本
③不能在线上使使用过多会对mysql的优化器负担过大 弓不可在线上环境随意创建索引表,线上数量大,会导致其他所有接口不可用,从而造成重大事故。

5、创建要考虑的因素:

1.数据量否够大,直询速度是否较慢。
2.创建引的列是否经常使用的查询条件。

6、不适合场景

1.读低频,添加平删除半高频的表业务,如日志表
2.服务器和电脑磁盘空间或内存不足的情况下,不要创建。

7、注意事项

需要对已经存在的很多数据的表新增案引的时候,要注意不要在生产环境上执行(十一个没有用户使用的时间进行索引创建因为索引创建会锁表,其他业务场景就只能排队等待。
(如停服更新).

8、索引分类

按照是否为主键
—普通索引
—主键索引(聚簇索引)
按照特征
—普通索引
—唯一索引
—联合索引

一、创建索引

1.1手动创建普通索引

creat index 索引名 on 表名(字段名[字段名2];
--命名规则idx_索引级别_名称  如idx_id\idx_unique_name \~~

1.2查看索引

show index from 表名;

1.3手动创建唯一索引

creat nuique index 索引名 on 表名(列名1)--idx_unique_name

1.4添加主键索引

alter table 表名 add primary key(列名);
--table_name 

1.5删除索引

drop index 索引名 no 表名;
--索引名一定是唯一的不会出现删除错误问题

二、索引 VS 约束

1、在索引或者约束创建时,会自动生成彼此,不可分割
2、是不同义务定义,约束时是用来规范数据的正确性的,而索引是用来提升数据库的程序性能的

三、索引和约束的注意事项

1、在创建索引时会自动创建相应的约束,而删除时也会删除相应的约束
2、在创建索引时需要确保原先的数据符合唯一约束的条件才能创建成功,否则创建失败、

四、索引实现的原理

使用了B+树
1、二叉树
缺陷:层级较高查询和维护不方便
2、B树
缺陷:将所以的数据存储在叶子节点和非叶子节点上,数据量较大,把索引加载起来需要大量时间
3、B+树
优化:1、非叶子节点不再存储表数据
2、叶子节点存储的是数据的地址()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值