后端岗位面试题更新 2026-08-05

请列举在哪些实际业务或数据场景下,不建议为数据库表字段创建索引?

后端开发技术原理方案权衡MySQL

考察说明

考查对索引代价和适用边界的理解,能否识别索引失效或反效果的使用场景。

回答思路

  1. 【回答框架 1】索引虽能加速查询,但会占用额外磁盘和内存空间,且每次插入、删除、更新都需要同步维护索引结构,增加写操作开销。若表的数据量很小,如几百行以内,全表扫描成本极低,建立索引反而可能因维护成本和不必要的存储而得不偿失。
  2. 【回答框架 2】当某个字段的重复值极高、区分度很低时,如性别字段,索引选择性差,优化器可能仍选择全表扫描,索引基本发挥不了提速作用,属于低效索引,不建议单独建立。
  3. 【回答框架 3】频繁更新或大量写入的表,若在热点修改字段上建索引,会导致索引频繁分裂和重排,加剧写放大和锁竞争,严重影响并发写性能,通常非必要不建索引。
  4. 【回答框架 4】查询条件中无法利用索引的字段无需建索引,如对字段进行函数运算、隐式类型转换或使用前置通配符模糊匹配时,索引会失效;此外,表达式中包含字段或使用OR关联非索引列,也常使索引不可用。
  5. 【回答框架 5】对于几乎不会出现在WHERE、JOIN或ORDER BY中的字段,索引没有查询价值,只会白白增加存储和维护负担,应避免建立。但创建索引前还应结合真实业务查询模式和数据分布综合评估,不应机械套用规则。
  6. 【关键点 1】小数据量表上索引收益有限且增加维护成本。
  7. 【关键点 2】区分度低的字段索引选择性差,难以提速。
  8. 【关键点 3】频繁写表上的索引会加剧写放大和锁竞争。
  9. 【关键点 4】索引失效场景如函数运算、隐式转换、前导通配符下建索引无意义。
  10. 【关键点 5】冷字段或极少参与查询的字段不适合建索引。
  11. 【易错点 1】不要将索引失效场景直接等同于不能建索引,具体优化器行为与版本和数据分布相关。
  12. 【易错点 2】不能仅凭数据量小或区分度低就绝对否定索引,极个别查询仍可能受益。
  13. 【易错点 3】索引数量多不等于性能好,冗余索引会拖垮写入和存储。