[MySQL] 索引优化不只是用于面试

面试的时候,大部分面试官会问MysqL的索引问题,也是必问的问题,但是感觉大部分面试官都是把网上的面试题原封不动的说出来,要开发人员来应试答题.

这样的形式,我的理解是既不能体现出面试官的能力,又不能考察到程序员的MysqL功力,基本是无意义的 .

 

如何在平常的开发中体现出这些存在于理论上的原理性的知识点,是我一直思考的问题.

在开发的时候,当构思完成后,第一步就是设计表结构 . 我们设计表,基本的思路就是

 

设计一个字段自增,设计其他字段,设置自增id为主键,表的存储引擎为innodb .

在这个过程中,就能体现出了很多索引方面的东西,设计主键的目的是使整张表根据主键聚簇起来,变成一个树的样子 .树的叶子节点就是实际记录,其他分叉就是根据主键生成的,如果要查询数据,根据主键id查,速度最快. 这样的形式还有个名词叫聚簇索引

 

当然除了根据主键id查,我们还会根据其他字段进行查询,需要我们提前想好未来的查询sql是什么,被查询的字段是什么,要查询出的字段是什么 .

如果我们有根据两个字段进行的and条件查询,就可以把这两个字段做成一个联合索引,比如字段是a,b ,我们设计的联合索引就可以是(a,b) .

设计完成后会在表的整体之外多了这样一个(a,b)的索引树,这个索引树的叶子节点是主键,我们查询的时候会现在这个(a,b)索引树里查到叶子主键,再通过主键在刚才的主键树上查到叶子记录,这样就会出现两次查询的过程.如果我们要查询的字段数据只有a,b,那么就直接在刚才的(a,b)索引树取出来了,这个名词就叫覆盖索引

 

联合索引的最左前缀,又是什么呢?

因为b+树,这样的索引树,跟二叉搜索树一样,都是要求有序的 . 我们的(a,b) 也是会是排好序的,排序就要有个先后,先排好a,在a的基础上再排b . 因此就会在查询的过程中不能跳过a直接去查b,就体现出了最左前缀.

 

相关文章

优化MySQL数据库发布系统存储的方法有:1.mysql库主从读写分...
使用mysql的方法:在“我的电脑”→右键→“管理”→“服务”...
在mysql中查看root用户权限的方法:1.命令行启动mysql服务;...
MySQL主从复制是用来备份一个与主数据库一样环境的从数据库,...
运行mysql的方法1.启动mysql服务,在“我的电脑”→右键→“...
开启mysql的方法1.可以通过快捷键win+r,输入cmd,打开窗口,...