数据库索引原理

数据库索引原理

索引的目的在于提高查询效率,索引就像是书的目录,是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。
索引的原理在于使用空间换时间,索引会将建立的索引KEY存储在N叉树(BTree)。BTree适合在磁盘存储设备上组织动态查找表,这些数据结构以某种方式引用(指向)数据。

磁盘IO预读

计算机操作系统考虑到磁盘IO操作的高昂代价,当一次IO操作时,会把当前磁盘页和相邻的数据也读取到内存缓存区。

索引的结构数据

索引是使用B+树实现的数据结构。


数据库索引原理_第1张图片
image.png

每个磁盘块包含:数据项(蓝色)、指针(黄色);非叶子节点只不存储真实的数据,只存储指引搜索方向的数据项,真实的数据存储在叶子结点。P1指向小于17的磁盘块,P2指向17和35之间的磁盘块,P3表示大雨35的磁盘块。

二叉树

二叉查找树是一种查找效率非常高的数据结构,二叉查找树的结构不适合数据库,因为它的查找效率与层数相关。它有三个特点。

  1. 每个节点最多只有两个子树。
  2. 左子树都为小于父节点的值,右子树都为大于父节点的值。
  3. 在n个节点中找到目标值,一般只需要log(n)次比较。

BTree树

这种数据结构,非常有利于减少读取硬盘的次数。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据。


数据库索引原理_第2张图片
image.png

B树的特点也有三个。

  1. 一个节点可以容纳多个值。比如上图中,最多的一个节点容纳了4个值。
  2. 除非数据已经填满,否则不会增加新的层。也就是说,B树追求"层"越少越好。
  3. 子节点中的值,与父节点中的值,有严格的大小对应关系。

你可能感兴趣的:(数据库索引原理)