所以假设还是这个样子的话,也就只能全表扫描了,从第一个数据页开始,每个数据页都进入到页目 录里查找主键,最坏情况下,所有数据页你都得扫描一遍,还是很坑的。
所以其实此时就需要针对主键设计一个索引了,针对主键的索引实际上就是主键目录,这个主键目录 呢,就是把每个数据页的页号,还有数据页里最小的主键值放在一起,组成一个索引的目录,如下图所 示。 之前是页目录里保存的数据的id,对应的槽位。现在是主键目录,里面保存了,n多个页目录的号(数据页的号码),以及每一个页目录里最小的那一行数据的id。例如:
现在有了主键目录的话,如果要找id=3的这行数据,那么就可以去主键目录里找,那么id=3小于数据页8里的最小主键id=4,所以不可能在数据页8里,所以只能在数据页2里。
假设有很多的数据页,在主键目录里就会有很多的数据页和最小主键值,此时完全可以根据二分查 找的方式来找id到底在哪个数据页里! 所以这个效率是非常之高的,而类似上图的主键目录,就可以认为是主键索引。
并且数据页都是一坨一坨的连续数据放在很多磁盘文件里的,所以只要能够根据主键 索引定位到数据所在的数据页,此时假设有别的方式存储了数据页跟磁盘文件的对应关系,此时就可以找到一个磁盘文件。 而且假设数据页在磁盘文件里的位置也就是offset偏移量,也是可以知道的,此时就可以直接通过随机读的方式定位到磁盘文件的某个offset偏移量的位置,然后就可以读取连续的 一大坨数据页了!
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!