一个简单的索引方案
回到正题,我们为什么要遍历所有的数据页呢?因为各个页中的记录并没有规律,我们并不知
道我们的搜索条件匹配哪些页中的记录,所以
不
得
不
依次遍历。所以如果我们想快速的定位
到需要查找的记录在哪些数据页中该咋办?就像为数据页中的记录建立一个目录一样,我们也
可以为所有的数据页建立一个目录呀,建这个目录必须完成下边这些事儿:
下一个数据页的主键值必须大于上一个页中的主键值。
其实这句话的完整表述是这样的:下一个数据页中用户记录的主键值必须大于上一
个页中用户记录的主键值。为了故事的顺利发展,我们这里需要做一个假设:假设
我们的每个数据页最多能存放3条记录(实际上一个数据页非常大,可以存放下好多
记录)。有了这个假设之后我们向 index_demo 表插入3条记录:
mysql> INSERT INTO index_demo VALUES(1, 4, 'u'), (3, 9, 'd'), (5, 3, 'y');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>
那么这些记录已经按照主键值的大小串联成一个单向链表了,如图所示: