码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
【mysql体系结构】B+树索引
【mysql
体系结构
】B+树索引
B+树索引总结
每个索引都对应一颗B+树,B+树分为好多层,最下边一层是叶子节点,其余都是内节点。所有用户记录都存储在B+树的叶子节点,所有目录项记录都存储在内节点
InnoDB存储引擎会自动为主键(如果没有它会自动帮我们添加)建立聚簇索引,聚簇索引的叶子节点包含完整的用户记录
我们可以为自己感兴趣的列建立二级索引,二级索引的叶子节点包含的用户记录由索引列+主键组成,所以如果想要通过二级索引来查找完整的用户记录的话,需要通过回表操作,也就是通过二级索引找到主键值之后再到聚簇索引中查找完整的用户记录
B+树中每层节点都是按照索引列值从小到大的顺序排序而组成了双向链表,而且每个页内的记录(不论是用户记录还是目录项记录)都是按照索引列的值从大到小的顺序而形成一个单链表。如果是联合索引的话,则页面和记录先按照联合索引前边的列排序,如果该列值相同,再按照联合索引后边的列排序。
通过索引查找记录是从B+树的根节点开始,一层一层向下搜索。由于每个页面都按照索引列的值建立了Page Directory(页目录),所以在这些页面中的查询非常快。
在使用索引时需要注意的事项
只为用于搜索、排序或分组的列创建索引
为列的基数大的列创建索引
索引列的类型尽量小
可以只对字符串值的前缀创建索引
只有索引列在比较表达式中单独出现才可以适用索引
为了尽可能少的让聚簇索引发生页分裂和记录移位的情况,建议让主键拥有AUTO_INCREMENT属性
定位并删除表中的重复和冗余索引
尽量使用覆盖索引进行查询,避免回表带来的性能损耗。
相关阅读:
希望科怀早日康复
Qt进程间通信(QSharedMemory、QLocalSocket、QWebSocket、QProcess、D-BUS、QTcpSocket)
前端培训丁鹿学堂:vue3中setup语法糖特性写法总结
【CSS】你还记得组合选择器怎么用吗?
uni-app 之 vue位置怎样设置
浙大MPA成功上岸笔试备考经验-岁月不负努力的人
2023最新UI工作室官网个人主页源码/背景音乐/随机壁纸/一言
ARM架构概览
高阶函数1
Go笔记20221124
原文地址:https://blog.csdn.net/weixin_49756466/article/details/126920561
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号