论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
MYSQL 索引
MYSQL 索引
丝
金牌会员
|
2024-12-30 12:09:26
|
显示全部楼层
|
阅读模式
楼主
主题
805
|
帖子
805
|
积分
2415
目录
一、什么是索引
索引使用的数据结构
B+树的特点
B+树与B树对比
二、MYSQL中的页
为什么要使用页
三、索引分类
主键索引
平常索引
唯一索引
全文索引
聚集索引
非聚集索引
索引覆盖
一、什么是索引
MYSQL是一种数据结构,它可以资助数据库高效地查询、更新数据表中的数据。索引通过一定的规则排列数据表中的记录,使得对表的查询可以通过对索引的查询来加快速率。
MYSQL索引雷同于书籍的目录,通过指向数据行的位置,可以快速定位和访问表中的数据。就像汉语字典中,我们可以按照笔画、偏旁部首、拼音等排序来快速查找到必要的字。
下面这是汉语字典中的笔画检索目录。
使用索引的目的,就是
提高数据检索的效率。
索引使用的数据结构
MYSQL索引使用的数据结构是B+树。
B+树是一种常用于数据库和文件系统等场合的平衡查找树,如图,
B+树的特点
能够保持数据稳定有序,插入与修改有较稳定的时间复杂度
非叶子节点仅具有索引作用,不存储数据,所有叶子节点保存真实数据
所有叶子节点构成一个有序链表,可以按照key排序的序次一次遍历全部数据
时间夫复杂度:O(logN)
B+树与B树对比
叶子节点之间有一个相互连接的引用,可以通过一个叶子节点找到它的兄弟节点。MYSQL在组织叶子节点时使用的是双向链表。
非叶子节点的值都包含在叶子节点中。MYSQL非叶子节点只保存了对子节点的引用,没有保存真实数据,所有真实的数据都保存在叶子节点。
对于B+树而言,在相同树高的情况下,查找任一元素的时间复杂度都一样,性能均衡
二、MYSQL中的页
为什么要使用页
这里可以先提到一个文件的格式
.ibd
文件,它是数据库中表的存储方式,
而在
.ibd
文件中最紧张的结构体就是页,页是内存与磁盘交互的最小单元,默认大小为
16KB
,每次内存与磁盘的交互至少读取一页,所以在磁盘中每个页的地点都是连续的。
每一个页中即使没有数据也会使用16KB的存储空间,同时与索引的B+树种的节点对应。
在MYSQL中有很多种不同类型的页,最常用的就是用来存储数据和索引的“
索引页
”
,
也叫做“
数据页
”,但不论哪种类型的页都会包含
页头
和
页尾
,页的主体信息使用
数据“行”
进行添补
数据页的根本结构如下:
三、索引分类
主键索引
当在一个表上定义一个主键PRIMARY KEY时,自动创建索引,索引的值是主键列的值,将使用它作为主键索引(聚集索引)。
推荐为每一个表定一个主键。如果没有逻辑上唯一且非空的列或列集可以使用主键,则添加一个自增列。
平常索引
最根本的索引,没有唯一性的限制。
大概为多列创建组合索引,称为复合索引或组合索引
唯一索引
当在一个表上定义一个唯一键UNIQUE时,自动创建唯一索引。
与平常索引雷同,但区别于唯一索引的列不答应有重复值。
全文索引
基于文本列上创建,以加快对这些列中包含的数据查询和DML操作。
用于全文搜索,仅MyISAM和InnoDB引擎支持。
聚集索引
与主键索引是同义词。
如果没有表定义为主键,将会使用第一个 UNIQUE 和 NOT NULL 的列作为聚集索引。
如果表中没有主键 或者 符合的 UNIQUE 索引,将会为新插入的行天生一个行号并用6字节的ROW_ID字段(数据行中的一个隐藏列之一)记录,ROW_ID单调递增,并用其作为索引。
非聚集索引
聚集索引以外的所有索引称为非聚集索引或二级索引。
二级索引中的每条记录都包含该行的主键列,以及二级索引指定的列。
InnoDB使用这个主键值来搜索聚集索引中的行,这个过程叫做回表查询。
索引覆盖
当一个select语句使用了平常索引且查询列表中刚好是创建平常索引时的所有或者部分列,这时就可以直接返回数据,而不用回表查询,这里的现象叫做索引覆盖。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
丝
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL 5.7 安装教程(全步骤、保姆级教 ...
ShardingSphere 异构迁移最佳实践:将3 ...
本科毕设CTF平台-MarsCTF
15.Linux和Windows入侵排查
Grafana 系列文章(一):基于 Grafana ...
mysql数据迁移,通用windows->linux,li ...
KubeEdge 1.12版本发布,稳定性、安全 ...
Redis介绍与安装
还在写恶心的trim代码吗?用这个注解让 ...
Sickos1_1
标签云
挺好的
服务器
快速回复
返回顶部
返回列表