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

SQL索引是否会导致搜索查询耗时变长?背后原因及示例有哪些?

索引反而延长查询耗时的核心原因

索引的本质是通过额外的存储空间、写入时的索引维护开销,来降低查询时的检索成本。当索引检索的综合开销高于全表扫描的开销时,就会出现用索引比不用索引更慢的情况。

典型的低效索引场景
  • 低区分度字段的单列索引
    当索引字段的取值非常少,符合查询条件的行数占总表比例超过15%左右时,走索引需要先遍历索引树拿到主键、再回表查询完整数据的随机IO开销,会远高于全表扫描的顺序IO开销。
    示例:100万行的用户表,为仅存3种取值的gender字段建普通索引,执行SELECT * FROM user WHERE gender = '男'时,走索引的耗时通常是全表扫描的2~3倍。
  • 小表上的非主键索引
    行数不足1000行的小表,全表扫描的开销本身极低,如果额外建立多个索引,不仅写入时要同步维护所有索引拉高写入耗时,查询时走索引的寻址+回表开销也会高于直接遍历全表的开销。
  • 存在隐式类型转换的索引
    如果查询时的写法导致索引字段被函数包裹或者发生隐式类型转换,会直接导致索引失效,数据库不仅要走全表扫描,还要额外承担类型转换/函数计算的开销,耗时比普通全表扫描更高。
    示例:字符串类型的user_id字段建有索引,执行SELECT * FROM user WHERE user_id = 12345时,数据库会对所有user_id字段做字符串转数字的转换,索引完全失效。
  • 不符合最左匹配原则的联合索引
    联合索引遵循最左匹配规则,当查询条件完全不包含联合索引的最左字段时,索引无法被命中,数据库在查询优化阶段还会多一步索引适配判断的开销,整体耗时略高于直接全表扫描。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:04