数据库索引

一、综述

数据库,说白了就是以某种形式存储的一系列数据的集合。同一张表中,我们可以将一行数据看作一个基本单位,而开发中使用最多的查询就是以行为单位对数据进行的检索。现在数据的存储一般都采用B+树,会根据主键来构建一个聚簇索引(默认为主键索引,也可自己设定聚簇索引)存储数据,虽然根据主键id的随机访问由于B+树已经进行了排序相对较快,但是在查询条件中包含主键id以外的字段时,查找效率是非常低的,例如在根据姓名、电话号码等字段进行查找时,由于其行数据在存储时是无序的,不得不遍历比较表中所有行对应列的数据,在一个数据量庞大的表中这种查询的效率是无法忍受的。

因此就需要手动对字段建立索引,索引是一种数据结构,类似书的目录,使用索引可以加速对数据库表中特定列的搜索操作。不同数据库的索引在原理上有相似之处,它们的目的都是提高数据库查询的性能。

二、索引的优劣

索引的优点是显而易见的,一言概之:加速查询,减轻数据库查询压力

但是数据结构的特点就是时间与空间的交易,既然节省了查询的时间,其缺陷就是需要花费额外的空间,建立索引是需要占用额外的物理空间的;此外,由于需要维护索引的可靠性,在表的增删改过程中也需要不断更新索引,会降低查询以外操作的效率。

因此索引不能随意地大量建立索引,需要综合考虑哪些是常用查询字段或者查询组合然后才能据此建立索引。

三、索引的分类

常见的索引有以下几种分类:

  1. 单列索引(Single-Column Index): 这是最基本的索引形式,仅针对表中的单个列创建。它可以加速对该列的查询和排序操作。

  2. 复合索引(Composite Index): 复合索引是针对表中多个列的索引。它可以加速涉及复合索引列的查询,但也要注意在查询中使用索引的顺序。

  3. 唯一索引(Unique Index): 这种索引要求索引列的所有值都是唯一的,用于确保表中的数据不包含重复的条目。主键通常会自动创建唯一索引。

  4. 主键索引(Primary Key Index): 主键是表中的唯一标识符,通常会自动创建主键索引。主键索引要求索引列的值是唯一的且不为空。

  5. 聚集索引(Clustered Index): 在某些数据库中,聚集索引决定了数据在磁盘上的物理排序。表中的数据按照聚集索引的顺序存储,因此对聚集索引的查询性能更高。

  6. 非聚集索引(Non-Clustered Index): 非聚集索引不影响数据在磁盘上的物理排序,而是单独存储索引的信息。非聚集索引的查询性能可能较聚集索引略低,但它减少了对数据存储的影响。

  7. 全文索引(Full-Text Index): 用于支持全文搜索的索引类型,允许在文本数据中进行复杂的文本搜索。

  8. 哈希索引(Hash Index): 使用哈希函数将索引列的值映射到特定的存储位置。适用于等值查询,但不适用于范围查询。

  9. 空间索引(Spatial Index): 用于处理地理空间数据的索引类型,例如地理信息系统(GIS)中的空间索引。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值