数据库索引

索引

为什么我们需要索引

加快数据库的查询速度。

实现

索引的基本原理:保存一些元数据作为路标,帮助我们快速查找数据。如果我们想要以不同的方式查找同一份数据,可能需要建立多份索引。

  • 哈希:单行查询的时间复杂度是 O(1),但是范围查询的时间复杂度会退化到 O(n),而 SQL 有很多范围查询。

  • 树:平衡树的增删查改的时间复杂度是 O(lg(n)),与树的高度成正比。但是,不同平衡树的区别是对磁盘IO的优化。

    • 平衡二叉搜索树:(1)树的高度比较高,一次查询可能比较慢。(2)一个节点只存储了一条记录,需要多次磁盘IO。
    • B 树:(1)m 叉树存储大量数据时,树的高度仍然比较低。(2)一个节点存储了多条记录,如果将一个节点的大小设置为磁盘页大小,例如 4K,可充分利用磁盘预读的特性,极大地减少磁盘 IO 次数。
    • B+ 树:将叶子节点组成了一个有序链表,范围查询的效率比 B 树高。

优缺点

优点:大大加快查找数据的速度。

缺点:维护索引会产生额外的开销,特别是写入的时候。任何类型的索引都会减慢写入速度,因为每次写操作都会更新索引。所以,数据库通常不会为所有数据生成索引,需要程序员或DBA基于应用查询模式的了解来正确设置索引,以获取最大的收益。

怎么正确地使用索引

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。