持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
前言
上篇我们学习了MySQL中的InnoDB的索引。有兴趣的小伙伴可以阅读(MySQL学习-InnoDB中的索引(一))。
下面我们继续学习MySQL中的InnoDB的索引。
InnoDB中的索引
设计索引
上一节,我们创建了一张表,并说明了表中的记录说明。下面设计一个简单的索引方案。
简单的索引设计方案
我们在根据某个搜索条件查找一些记录时为什么要遍历所有的数据页呢?因为各个页中的记录并没有规律,我们并不知道搜索条件匹配哪些页中的记录,所以不得不一次遍历所有的数据页。所以如果我们想快速的定位到需要查找的记录在哪些数据页中怎么办?我们可以为快速定位记录所在的数据页而建立一个目录,建这个目录必须完成以下步骤:
- 下一个数据页中用户记录的主键值必须大于上一个页中用户记录的主键值。
- 给所有的页建立一个目录项。
我们给每页创建一个目录项,目录项中包含页号和该页中记录的最小主键值。然后把这些目录项放入数组中,就可以实现快速查找某条记录的功能了。比如:查找主键1的记录,具体查找过程分两步:
- 先从目录项中根据二分法快速确定出主键值为1的记录再目录项1中,它对应的页是页1。
- 再查找页1中主键是1的具体记录信息。
至此,针对数据页做的简易目录就做好了,这个目录有一个别名,我们叫它索引。
今天先学习到这里,明天继续。