Skip to content

对索引的了解?哪些字段适合加索引,哪些不适合

索引是数据库中用于加快数据查询的重要结构,类似于书的目录,可以让数据库迅速定位到所需的数据,而不必每次都全表扫描。

一、常见索引类型

  • B树索引:大多数关系型数据库的默认索引类型,支持范围查询、模糊查询等。
  • 哈希索引:适合等值查询(=);无法用于范围查询。
  • 全文索引:针对大文本搜索,常用于文章、描述类字段。
  • 复合索引:对多个字段联合建立的索引,优化多条件查询。

二、适合加索引的字段

  1. 高基数(唯一性强)字段
    如用户ID、订单号、邮箱、手机号等。这类字段区分度高,能大幅提升查询效率。
    例:订单表的订单ID、用户表的手机号。
  2. 经常作为查询条件(WHERE、JOIN、ORDER BY、GROUP BY)的字段
    如登录时经常查询的邮箱、用户ID;报表经常分组的日期字段等。
    例:通过用户ID或邮箱登录时,常用作查询条件。
  3. 外键字段和经常用于表连接的字段
    能加快多表连接操作。
    例:订单表中的用户ID是用户表的外键,建议加索引。
  4. 经常用于排序、分组的字段
    能加快ORDER BY和GROUP BY的查询速度。
    例:订单表的创建时间用于最近订单排序,适合加索引。

三、不适合加索引的字段

  1. 低基数字段
    如性别、状态(如0/1)、布尔值。此类字段区分度低,加索引收益低,占空间反而影响写入性能。
    例:性别字段只有男、女两种,数据分布高度集中。
  2. 频繁更新的字段
    索引要随数据写入/更新同步维护,过于频繁的变动会拖慢整体性能。
    例:如用户最后一次登录时间/最近修改时间等频繁变更字段,一般不建议加索引。
  3. 超长文本、BLOB/CLOB类型的字段
    例如评论、备注、图片、附件等字段,索引只针对前缀、内容多变且占用空间大,通常用全文索引或不加索引。
  4. 小表或记录量很小的表
    数据量小,直接全表扫描效率更高,加索引反而浪费资源。

四、索引设计最佳实践

  • 合理设计复合索引:根据查询常用的多个字段创建联合索引,避免“失效”。
  • 避免过多索引:每一个索引都会影响写入和更新性能。只为关键查询和连接加索引。
  • 覆盖索引优先:查询可以只靠索引而无需回表,进一步提升效率。
  • 定期检查和优化:随着业务发展、查询变化,需要定期清理冗余索引。
  • 注意索引顺序:复合索引时,字段顺序建议放最常用、区分度高的字段在前。

六、总结
加索引的目的是提升查询效率,但不是越多越好。应该根据数据分布、查询特点和业务需求有选择性地加索引。合理的索引能极大提升数据库性能,但滥用索引则会降低写入效率并增加维护成本。

更新: 2025-04-23 20:33:28
原文: https://www.yuque.com/tulingzhouyu/db22bv/ik082hzkgh3h6p7d