在通过类比理解联合索引之前,我们不妨思考如下几个问题。
假如,我们需要在字典中查找“仙”这个字,我们如何定位呢?第一步,可以通过首字母“x”初步定位,第二步通过第二个字母“i”定位到511页之后,顺着这个思路最终可以定位到在519页和523页之间。
接着,我们思考第二个问题,我们还是在字典中查找“仙”这个字。但是,假如,我们并不知道这个汉字的具体发音,不知道其拼音第一个字母是“x”,只知道后面的拼音“ian”。这种情形下,我们要如何定位呢?这种情况下我们发现,我们需要遍历目录,什么意思呢?因为不知道第一个字母是什么,所以,第一步需要查看首字母是“a”的情况,到字典中查看所有发音是“aian”的汉字,看是否有“仙”这个字。如果不存在,继续寻找首字母是“b”的情况,然后到字典中查看所有发音是“bian”的汉字,看是否存在“仙”这个字......以此类推,一直找到首字母是“x”,方可找到这个汉字。
至此,联合索引的本质就展现在各位读者的眼前,联合索引,就是数据库中多个字段上联合建立起来的索引。比如,数据库某张表有a,b,c,d.....等字段,我们在a,b,c三个字段上建立了联合索引,这就好比字典目录中第一级目录,第二级目录,第三级目录,这就意味着我们在执行数据库查询的时候,查询需要遵循一个顺序,即首先匹配a字段上的索引,然后,再匹配b字段上的索引,最后,再匹配c字段上索引,这就是最左匹配原则。由此,我们还发现了一点,只有第一级索引是全局有序,第二级就是局部有序,后面的都是局部有序。
基于我们上面思考的目录失效的场景,我们理应会想到索引会在某些情形下失效,比如,如果我们查询的条件中没有包含字段“a”的条件,查询条件中只包含“b”和“c”这两个字段,这种情况很好理解,就像通过目录查找“仙”这个字一样,在不知道首字母的情况下,需要查找所有的情况。
这篇文章不是技术科普文章,详情我就不展开论述。不过,我想通过以上类比,我们应该能够理解联合索引的本质。
当然,这不是重点,重点是我们能够理解类比走向抽象的意义。
每当我看到大家谈“数学”色变,每当我看到世人面对数学时眼中流露出恐惧之色时,我都想告诉他们,他们对数学的感觉是错误的,每当我看到数学被世人误解,总有种痛心的感觉,我想告诉他们数学真实的面貌。所以,我毅然决然地来实现这个梦想,把数学真实的面貌展现给大家,最终,让大家爱上数学。
我主要围绕K12数学从五个维度抽丝剥茧把真正的数学展现给大家。