You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

唯一复合索引对仅查询首列的效率是否等同非复合索引?是否需删原索引?

单列索引 vs 复合唯一索引:取舍与效率问题

是否要删除现有的单列A索引?

必须删。原因很明确:

  • 复合索引(A, B)的前缀是A,完全能覆盖所有仅针对A列的查询需求,留着单列索引纯属冗余。
  • 多一个索引就多一份维护成本:每次增删改数据时,数据库得同时更新两个B-tree索引,会额外消耗IO和CPU资源,拖慢写操作的速度,完全没必要。

仅查询A列时,复合索引和单列索引效率一样吗?

几乎没差别。

  • B-tree索引的排序特性决定了,复合索引里的A列是有序排列的,查询A列时,优化器会直接遍历复合索引的A分支,和单列索引的查找逻辑本质相同。
  • 唯一的细微差异是复合索引每条记录附带了B列的值,索引体积比单列索引略大,可能会有极微小的IO开销,但这种差异在绝大多数业务场景下根本感知不到。

补充提醒

  • 如果有基于A列的排序、分组操作,复合索引同样能胜任,因为A列本身是有序的。
  • 以后要是有同时涉及A和B的查询需求,这个复合索引还能直接覆盖查询,不用回表读取原数据,效率比单独维护两个索引更高。

内容的提问来源于stack exchange,提问作者asymmetriq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:56:07