之前面试问过我对于数据库索引的理解,这个问题不是具体的问题太宽泛,面试官也没进行引导,我不知道怎么回答,下面是结合查字典进行理解。
查字典
拿查字典举例,知道一个字怎么写但是不知道具体的意思以及发音,步骤如下
通过这个字包含的部首去字典里的部首目录匹配对应的部首
通过部首查询后面的检字表
这里包含部首的字,按照笔画数量来匹配对应的字
找到该字的具体页码查看具体的发音和意思
数据库查询
对应数据库sql查询来讲,先给要查询的数据表的对应查询字段建立非聚簇索引,如果多个字段可能需要建立联合索引
组织查询条件
确定where中的查询条件
非聚簇索引中匹配查询条件
查询条件经过数据库的解析,到对应的的非聚簇索引(通过b+树组织索引数据)中进行条件匹配,匹配的数据最终到叶子节点
聚簇索引中匹配最终的数据
最终通过叶子节点查询聚簇索引(通过b树组织索引数据)中的数据。
字典索引与数据库索引的对应关系
其中,部首对应sql查询条件,检字表对应非聚簇索引,页码对应聚簇索引。字典规定的页码排序是按照英文字母顺序,聚簇索引是按照主键的ascii顺序来进行。
如果知道要查的字的读音,可以顺着发音翻到对应的页码找到对应的字。对于数据库主键查询而言,通过主键可以直接通过聚簇索引匹配到唯一的数据,无需通过非聚簇索引进行条件匹配。