大家好,我是melo,一名大二后台练习生,大年初三,我又来充当反内卷第一人了!!!专栏引言MySQL,一个熟悉又陌生的名词,早在学习Javaweb的时候,我们就用到了MySQL数据库,在那个阶段,MySQL对我们来说似乎只是一个存储数据的好东西,存储时一股脑往里边塞,查询时也是盲目的全表查询(不带一点点优化) 。?
我们总是自欺欺人的觉得,我们通过其他方面来优化就好了阿,迟迟不愿面对MySQL高级,转而学习一些看似更为"高级"的东西,学Redis,来分担MySQL的压力,学MyCat等中间件,实现主从复制,读写分离,分库分表等等 。(说的就是melo没错了)?
到了准备面试的时候,发现面试题里边的MySQL一问三不知~
文章插图
而自己学到的前沿中间件,问的几乎很少!!自己也只是会用,写简历时只能弱弱写上"了解"xxx中间件……?
当然了,学习MySQL高级篇,不单单只是为了面试,实际的项目中,这一块的优化是十分重要的,体验过服务器宕机后,只能默默........
文章插图
?
【「MySQL高级篇」MySQL索引原理,设计原则】从现在开始吧,此时上岸还来得及!!!趁着大二上的寒假,补充补充MySQL高级篇的知识点,从如下几方面开启 MySQL高级篇之旅
文章插图
本篇速览早在MySQL基础篇,我们就听说了索引这么个东西,听起来是个很高级的东西,但当时只停留在了,索引能够加快查找的效率这一阶段的认知 。这篇将从如下几点,来带你逐一攻破ta:
- 索引到底是什么
- 索引底层的实现
- 聚簇索引是什么?二级索引呢?
- 最左前缀原则
- 如何设计索引,遵循的原则
- 索引相关语法
本篇篇幅较长,全文近6000字,可以收藏下来慢慢啃,没事就掏出来翻阅翻阅 。建议通过侧边栏目录检索对您有帮助的部分,其中有emoji表情前缀属于重点部分,觉得对您有帮助的话,melo还会持续更进完善本篇文章和MySQL专栏 。
- 不过就怕等到我更新时,那会您不方便找到我了hhh(高情商求关注)
其实简单来说,索引就是一个排好序的数据结构
文章插图
?
左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的) 。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速获取到相应数据 。
索引优势
- 加快查找和排序的速率,降低数据库的IO成本以及CPU的消耗
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性 。
- 索引实际上也是一张表,保存了主键和索引字段,并指向实体类的记录,本身需要占用空间
经验总结扩展阅读
- 我的世界怎么用附魔台附魔书(我的世界用高级附魔台怎么附魔)
- MySQL 索引失效-模糊查询,最左匹配原则,OR条件等。
- 30 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-番外篇
- MySQL 全局锁、表级锁、行级锁,你搞清楚了吗?
- 轻奢极简店名美甲 名字高级小众美甲店名
- llinux下mysql建库、新建用户、用户授权、修改用户密码
- RedHat7.6安装mysql8步骤
- 我不完美但我独一无二签名 很高级酷酷的签名
- 29 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-终篇
- 究极无敌细节版 Mysql索引