数据库之索引简介

本文介绍了数据库索引的基本概念,包括索引的数据结构如二叉树、红黑树等,并详细解释了索引如何通过二叉查找树加速数据检索,以及创建索引的原则。同时,文章还探讨了索引的优缺点,帮助读者理解何时应该使用索引。

索引

索引= 排序后的数据结构

在没有索引的情况下我们执行一条sql语句,那么是表进行全局遍历,磁盘寻址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。

用了索引之后,索引的数据结构是二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速获取到相应数据。

索引分类

  • 普通索引:仅加速查询
  • 唯一索引:加速查询 + 列值唯一(可以有null)
  • 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
  • 组合(联合)索引:多列值组成一个索引,注意:最左匹配原则

索引创建原则

  1. 在经常需要 搜索 的列上建索引,这样会大大加快查找速度、
  2. 在经常需要 连接 的列上建索引,可以加快连接的速度。
  3. 在经常需要 排序 的列上建索引,因为索引已经是排过序的,这样一来可以利用索引的排序,加快排序查询速度。
  • 注意:
    那是不是在数据库表字段中尽量多建索引呢?肯定是不是的。因为索引的建立和维护都是需要耗时的

    创建表时需要通过数据库去维护索引,添加记录、更新、修改时,也需要更新索引,会间接影响数据库的效率。

索引的优点

创建唯一性索引,保证数据库表中每一行数据的唯一性

大大加快数据的检索速度,这也是创建索引的最主要的原因

加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

索引的缺点

创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大

当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度

索引数据结构

  1. 二叉树 左边子节点比父节点小,右边子节点比父节点大

  2. 红黑树(平衡二叉树) 左旋和右旋实现自平衡

  3. Hash 散列

    1. JDK1.7 (数组+链表)

    2. JDK1.8 (数组+红黑树) 如果链表长度<=8

      hash算法,单个查询, 不支持范围查询,没有排序,所以mysql不适用它.

  4. B-Tree (多路搜索*–平衡树)

  5. B+Tree【MySQL使用】

MySQL中的B+Tree

见存储引擎B+Tree。
https://blog.csdn.net/numbbe/article/details/109300087

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值