MySQL的索引

1.MySQL索引的概念

索引是用过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定的行;(使查找更快)
在这里插入图片描述

1.1 索引的原理

索引本身很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储磁盘上;所以索引查找过程中就要差生磁盘I/O消耗,进而索引的结构组织要尽量减少查找过程中磁盘I/O的存储次数。

2. 索引的分类

2.1 按照实现的方式类

索引是存储引擎用来快速查找记录的一种数据结构,按照实现的方式类分,主要有Hash索引和B+Tree索引
在这里插入图片描述
hash有可能产生冲突,重复的内容开始查找,
在这里插入图片描述

2.1.1 hash算法

hash算法索引在mysql使用的很少;在这里插入图片描述

2.1.2 BTREE树

BTREE结构可以有效的解决之前的相关算法遇到的问题,比如hash不能进行范围搜索,二叉搜索树出现单向排列、二叉平衡树回旋到父亲结点多次;
在这里插入图片描述
MyISAM引擎使用B+Tree,叶子结点同时存放着数据记录的地址。
INNODB引擎使用B+Tree,叶子结点存的data域存放的是数据,相比MylSQM效率更高一些,但是比较占硬盘内存;

在这里插入图片描述
在这里插入图片描述

2.2 按照功能划分

在这里插入图片描述

2.2.1 普通索引

在这里插入图片描述
创建普通索引
在这里插入图片描述
查看索引:(主键自动创建索引)
在这里插入图片描述
删除索引

在这里插入图片描述

2.2.2 唯一索引

唯一索引与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
在这里插入图片描述

2.2.3 主键索引

主键索引就是:每张表一般都会有自己的主键,当我们在创建表时,MySQL会自动在主键列上建立一个索引。
注意
主键是具有唯一性并且不允许为NULL,所以他是一种特殊的唯一索引。
目的
提高查询的速度。

2.2.4 全文索引

全文索引不常用
最小的搜索字符:3个字符
最大的搜索字符:84个字符
全文索引 与 like 类似,当数据量比较大的时候,全文索引比like快很多。
在这里插入图片描述

2.2.5 空间索引

空间索引一般是用的比较少,了解即可。一个案列
在这里插入图片描述
在这里插入图片描述

3. 索引的优缺点以原则

3.1 索引的优点

  • 大大加快了数据的查询速度
  • 使用分组和排序进行数据查询时,可以显著减少查询时分组和排序的时间;
  • 创建唯一索引,能够保证数据库表中每一行数据的唯一性
  • 在实现数据的参考完整性方面,可以加速表与表之间的连接

3.2 索引的缺点

在这里插入图片描述

3.3 创建索引的原则

  • 更新频繁的列不应该设置索引
  • 数据量小的表不要使用索引(毕竟总共2页的文档,还要目录吗?)
  • 重复数据多的字段不应该设为索引(比如性别,只有男和女,一般来说,重复的数据超过百分只15就不该建立索引)
  • 首先应该考虑对where和order by设计的列上建立索引

参考:
https://www.bilibili.com/video/BV1iF411z7Pu?p=139

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值