一、没有索引会怎样
在没有索引的情况下,查询一个数据页中的记录的方法参考 https://blog.csdn.net/GOODNESS_/article/details/88709915 中的简单介绍。
如果没有索引,当我们查询时:
- 首选需要判断要查找的数据在哪一个数据页,这就需要从头开始遍历所有的数据页,直到确定所在的数据页。
- 查找到对应的数据页后是否是主键查询还分两种情况:
- 主键查询:根据Page Header中的槽加二分查找算法去查询。
- 非主键查询:只能遍历数据页中所有的记录来查找。
结论:通过查询方式得知这种查询方式当数据量大的时候是很耗时。
二、索引为什么会提升效率(索引原理):
基本原理:
- 由于数据页中的数据都是按照主键递增的顺序存储的,所以就可以根据一定的步长,将数据页中的第一个主键和当前数据页的页号集中写入到另一个数据页中(称为目录项记录,用记录的记录头信息中的record_type属性标识)。
- 查询时先查询目录项记录找到对应的数据页(目录项中最小主键通过记录头中的min_rec_mask=1属性标识,其余均为0)。
- 再根据上述查找方式的第二步查找。
也就是说,对查询的第一步做了一些优化与处理。
record_type分为四种类型:
1、record_type&