什么是数据库索引?
我们再平时的开发中免不了用到数据库的索引,接下来就简单说一下数据库索引。
数据库索引用来干什么?
数据库索引就是为了提高数据的查询速率。
数据库索引有哪些?
- 聚集索引:在数据库中,所有行数都会按照主键索引排序。
- 非聚集索引:就是给普通字段加上索引。
- 联合索引:好几个字段组成的索引称为联合索引。
索引的底层是?
数据库索引的底层是B+树。
B+树的中间元素不储存数据,只储存索引,数据存储在B+树的叶子节点处,一个节点可以存放多个数据,查找一个节点的时候可以有多个元素,大大提升查找效率,这就是为什么数据库索引用的就是B+树,因为索引很大,不可能都放在内存中,所以通常是以索引文件的形式放在磁盘上,所以当查找数据的时候就会有磁盘I/O的消耗,而B+树正可以解决这种问题,减少与磁盘的交互,因为进行一次I/O操作可以得到很多数据,增大查找数据的命中率。
索引在磁盘上的存储是怎样的?
索引在磁盘上聚集存储和非聚集存储的方式是不同的。
- 聚集索引在磁盘中的存储: 聚集索引叶子结点存储是表里面的所有行数据; 每个数据页在不同的磁盘上面。
- 非聚集索引在磁盘上的存储:叶子结点存储的是聚集索引键,而不存储表里面所有的行数据,所以在查找的时候,只能查找到聚集索引键,再通过聚集索引去表里面查找到数据。
索引的分类
数据库索引分为:
- 主键索引(PRIMAY KEY)
- 唯一索引(UNIQUE)
- 常规索引(INDEX)
- 全文索引(FULLTEXT)