头图

今天,对于大多数程序员,尤其是那些每天都在处理 CRUD 操作的小伙伴来说,覆盖索引(Covering Index)简直就是面试题中最基础的存在了,早就成了那种“烂大街”的题目,甚至连应届生都能轻松背出来那是什么。

不过,说实话,在实际开发中,能用到几次呢?写一个SELECT * ...,马上就“失效”了吧~😂

但你知道吗?当年,就连 SQLite 的作者 D. Richard Hipp 也对这个概念一无所知!你没听错,作为数据库大佬,他最初可是完全没接触过“覆盖索引”这个概念。直到某次在德国的 PHP 会议上,他碰巧遇到了 MySQL 的创始人之一 David Axmark,才接触到这个神奇的东西。不过,就在回程的飞机上,Richard 就为 SQLite 添加了覆盖索引的功能!

Richard 在一次访谈中提到,他当时受邀飞到德国参加一个 PHP 会议,因为那时 PHP 刚刚集成了 SQLite,大会特地邀请他去分享经验。巧得很,MySQL 的 David Axmark 也在现场。David 在演讲中讲解了 MySQL 是如何实现覆盖索引的,顿时让 Richard 大开眼界!简单来说,覆盖索引就是一个包含多个列的索引,若查询时只需要用到索引中的列,那么就可以直接从索引中取结果,省去访问原始表的麻烦,简直就是数据库查询的“加速器”!

在飞回家的航班上,Richard 可谓是灵感爆棚!他把笔记本一开,撸起袖子开始编程,就在大西洋上空的蓝天中完成了这个新功能💻✈️✨

这就是技术的魅力,一次会议,一次交流,就可能激发了“改变世界”的灵感!


da_miao_zi
1 声望0 粉丝

软件工程师、技术图书译者。译有《图解云计算架构》《图解量子计算机》《计算机是怎样跑起来的》《自制搜索引擎》等。