加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

优雅地回答面试官关于MySQL索引的拷问

发布时间:2021-03-24 15:11:31 所属栏目:传媒 来源:互联网
导读:学会认为,单独给 status 建立一个索引就可以了。 但是更优的方式是建立一个 status 和 create_time 组合索引,这是为了避免 MySQL 数据库发生文件排序。 因为在查询时,你只能用到 status 的索引,但如果要对 create_time 排序,就要用文件排序 filesort,



学会认为,单独给 status 建立一个索引就可以了。

但是更优的方式是建立一个 status 和 create_time 组合索引,这是为了避免 MySQL 数据库发生文件排序。

因为在查询时,你只能用到 status 的索引,但如果要对 create_time 排序,就要用文件排序 filesort,也就是在 SQL 执行计划中,Extra 列会出现 Using filesort 。

所以你要利用索引的有序性,在 status 和 create_time 列建立联合索引,这样根据 status 筛选后的数据就是按照 create_time 排好序的,避免在文件排序。

案例分析

通过这个案例,你可以发现“索引知识”的重要性,

数据库索引底层使用的是什么数据结构和算法呢?

  • 为什么 MySQL InnoDB 选择 B+Tree 当默认的索引数据结构?

  • 如何通过执行计划查看索引使用详情?

  • 有哪些情况会导致索引失效?

  • 平时有哪些常见的优化索引的方法?

……

总结起来就是如下几点:

  • 理解 MySQL InnoDB 的索引原理;

  • 掌握 B+Tree 相比于其他索引数据结构(如 B-Tree、二叉树,以及 Hash 表)的优势;

  • 掌握 MySQL 执行计划的方法;

  • 掌握导致索引失效的常见情况;

  • 掌握实际工作中常用的建立高效索引的技巧(如前缀索引、建立覆盖索引等)。

如果你曾经被问到其中某一个问题,那你就有必要认真夯实 MySQL 索引及优化的内容了。

案例解答

MySQL InnoDB 的索引原理

从数据结构的角度来看, MySQL 常见索引有 B+Tree 索引、HASH 索引、Full-Text 索引 。MySQL 常见的存储引擎 InnoDB、MyISAM 和 Memory 分别支持的索引类型。(后两个存储引擎在实际工作和面试中很少提及,因此只讲 InnoDB) 。

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读