Skip to content

面试速答(先看这里)

**一句话结论:**但是,如果有一种特殊情况,如男女比例是95:5,那么,这时候,如果我用"女'作为性别的查询条件的话,还是可以走索引,并且有很大的性能提升的,原因就是因为他可以过滤掉大部分数据。

60秒标准回答:

假如我的表中有一个性别字段,他的区分度肯定是不高的,只有男和女两种。一般情况下,如果表中数据量很大的话,用这个字段查询会导致没办法过滤掉很多数据,就可能没办法发挥索引的效果

但是,如果有一种特殊情况,如男女比例是95:5,那么,这时候,如果我用"女'作为性别的查询条件的话,还是可以走索引,并且有很大的性能提升的,原因就是因为他可以过滤掉大部分数据。走索引可以大大提升效率

这种一般在任务表中比较多,比如任务表中有状态,两种情况:INIT和SUCCESS,大多数情况下,任务都是SUCCESS的,只有一少部分是INIT,这时候就可以给这个字段加索引。这样当我们扫描任务表执行任务的时候,还是可以大大提升查询效率的

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**假如我的表中有一个性别字段,他的区分度肯定是不高的,只有男和女两种。
  • **要点2:**这种一般在任务表中比较多,比如任务表中有状态,两种情况:INIT和SUCCESS,大多数情况下,任务都是SUCCESS的,只有一少部分是INIT,这时候就可以给这个字段加索引。

**记忆锚点:**SUCCESS → INIT → 就可能没办法发挥索引

关键取舍:

  • 但是,如果有一种特殊情况,如男女比例是95:5,那么,这时候,如果我用"女'作为性别的查询条件的话,还是可以走索引,并且有很大的性能提升的,原因就是因为他可以过滤掉大部分数据。

加分表达:

  • 一般情况下,如果表中数据量很大的话,用这个字段查询会导致没办法过滤掉很多数据,就可能没办法发挥索引的效果。

追问准备:

  • 围绕「SUCCESS」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「INIT」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「就可能没办法发挥索引」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

不一定的

假如我的表中有一个性别字段,他的区分度肯定是不高的,只有男和女两种。一般情况下,如果表中数据量很大的话,用这个字段查询会导致没办法过滤掉很多数据,就可能没办法发挥索引的效果。

但是,如果有一种特殊情况,如男女比例是95:5,那么,这时候,如果我用"女'作为性别的查询条件的话,还是可以走索引,并且有很大的性能提升的,原因就是因为他可以过滤掉大部分数据。走索引可以大大提升效率。

这种一般在任务表中比较多,比如任务表中有状态,两种情况:INIT和SUCCESS,大多数情况下,任务都是SUCCESS的,只有一少部分是INIT,这时候就可以给这个字段加索引。这样当我们扫描任务表执行任务的时候,还是可以大大提升查询效率的。