[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事务还能这么理解?这回我知道怎么应付面试官了
- MMPose 1.0:优雅而强大的姿态估计算法框架
- 模型压缩库 MMRazor 全面升级,更灵活、自动
- MMRotate 全面升级,新增 BoxType 设计
- Java里面 根据一个字符串 计算他的hash 值(工具类)md5散列的方式计算hash值
- 【面试】揭秘面试背后的那点真实
- 【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面
- 【网络层】IP组播(多播)、硬件组播、IGMP、组播路由选择协议、移动IP、路由器详解、路由表和路由转发
- 技术硬实力,你应该这样和面试官聊Dubbo
- 技术硬实力,这样去面试你肯定会过
- 为什么阿里巴巴会这么重视技术面试呢?
- 广和通重磅发布最新5G Sub-6及毫米波模组FX170(W)!
- 学习ASP.NET Core Blazor编程系列二十二——登录(1)
- 学习ASP.NET Core Blazor编程系列二十一——数据刷新
- 学习ASP.NET Core Blazor编程系列二十——文件上传(完)
- 学习ASP.NET Core Blazor编程系列十九——文件上传(下)
- 学习ASP.NET Core Blazor编程系列十八——文件上传(中)
- 学习ASP.NET Core Blazor编程系列十七——文件上传(上)
- 学习ASP.NET Core Blazor编程系列十六——排序