如何彻头彻尾了解 MySQL 的索引

作者/分享人:张宏杰
向 Ta 提问
宏杰,河北大学计算机硕士,资深工程师一枚,10年+工作经验。先后就职于青牛软件科技有限公司,用友集团。曾在用友担任架构师职务。设计过用友薪福社HR Saas底层开发框架架构,专注前沿互联网技术,对mysql 有深入研究,曾在公司担任 mysql 数据库顾问。

如果正确合理设计并且使用索引的 MySQL 是一辆兰博基尼的话,那么没有设计和使用索引的 MySQL 就是一个人力三轮车。没有索引的表,单表查询可能几十万数据就是瓶颈,那到底该如何应对互联网企业的上亿的数据?

MySQL 中的 InnoDB 存储引擎的核心在于索引,索引的核心在于 B+tree,所以说要想了解 MySQL 中索引,我们必须要先了解 B+tree ,而 B+tree 的说白了就是一颗平衡多叉树。

通过本场 Chat 你能够获得一下内容:

  1. 二叉树的转置。
  2. B+tree 详解,知道 B+tree 到底是创建,转置的,每一层到底有多少个节点?
  3. 聚簇索引和非聚簇索引的区别;以及在索引上到底存储的是什么,为什么聚簇索引索引只需要一次查找,而非聚簇索引需要两次?
  4. B+tree 如何进行优化?索引遵循哪些原则?存储引擎会进行哪些自动优化?到底何时索引会失效?
  5. 索引与锁有什么关系?
  6. 还有什么其他的索引类型,各自索引有哪些优缺点?
已有224人预订
预订达标
文章出炉
     
07月20日
08月06日
本场 Chat 文章已出炉,购买后即可阅读文章并获得一张张宏杰的读者圈Pass
请务必添加GitChat服务号以查看活动进度及获取活动通知。
查看文章评论/提问
zero
6、不在索引列上做任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描。 这句的意思,应该是在索引列上做操作会导致索引失效吧。
GaoLiaoLiao
节点页只包含了索引列,这里“节点页”是什么意思呢?
新阳
树的转置和索引的存储和查询有什么关联?
过去、今日
一个磁盘块说的也就2k,怎么保证第三层磁盘存储上百万数据???
过去、今日
hash索引和聚簇索引是索引的两种数据结构吧
你可能还喜欢
如何设计一个灵活的 MySQL 数据表,应对灵活多变的需求
李岩
Jenkins 自动化构建部署实战
火币集团研发中心
Java 程序员应掌握的 Nginx 实战应用
JPM
带你玩转 JSON
能量架构师
Python Pandas 做数据分析之玩转 Excel 报表分析
WinterLeo
小程序从入门到进阶
loonglong
微信扫描登录