数据库索引全面解析

本文详细介绍了数据库索引的概念、分类,包括B+树索引、哈希索引、全文索引和RTree索引。讨论了索引的优缺点,如加快查找速度、增加维护成本,并提供了何时添加或不添加索引的指导原则。重点分析了MyISAM和InnoDB存储引擎的索引实现差异,以及不同场景下索引的选择和设计策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

索引是什么?

数据库中查找操作非常普遍,索引就是提升查找速度的一种手段。

索引分类

  1. B+树索引
    它就是传统意义上的索引,它是最常用、最有效的索引。

  2. 哈希索引
    哈希索引是一种自适应的索引,数据库会根据表的使用情况自动生成哈希索引,我们人为是没办法干预的。

  3. 全文索引
    用于实现关键词搜索。但它只能根据空格分词,因此不支持中文。
    若要实现搜索功能,可选择lucene。

  4. RTree索引
    在mysql很少使用,仅支持geometry数据类型;相对于BTREE,RTREE的优势在于范围查找。

B+树索引

数据库以页为存储单元,一个页是8K(8192Byte),一页可以存放N条记录。
页在B+树中分为:数据页和索引页。
B+树的高一般为2-4层,因此查找某一键值的行记录只需2-4次IO,效率较高。

聚集索引 和 非聚集索引

不管是聚集索引还是非聚集索引,它们的逻辑结构都一棵是B+树,它们的唯一区别在于:

  • 聚集索引的数据页存放的是完整的记录;也就是说,聚集索引决定了表的物理存储顺序;
  • 非聚集索引的数据页只存指向记录的地址信息,它真正的数据已经在聚集索引中存储了。

联合索引 和 覆盖索引

  1. 联合索引
    当查询条件涉及多列时,可以使用联合索引。

  2. 覆盖索引
    只需通过辅助索引就能获取要查询的信息,而无需再次通过聚集索引查询具体的记录信息。
    由于覆盖索引并不包含整行的记录,因

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值