遇到应付你的面试官你怎么办?

别把面试官当神,因为很多问题,他们也不知道答案。甚至他知道的还是错误的答案,而且他现在问你的问题,也可能是他现在正面临的一个技术问题。

遇到应付你的面试官你怎么办?

今天就遇到了一位面试官,他以为自己就是正确的。其实,他只是在面试人多的时候,来应付你的。

问:联合索引,a,b,c 三个字段联合起来的索引。index(a,b,c),现在我使用 b,c 去 where 查询,会用到索引吗?

我说可能不会,面试官说,你错了。会用到索引的,你下去再复习一下。我还想解释,但是面试官有点不肖一顾,你下去在看看联合索引吧。

我主要是脾气好,要不然,我直接就走了。

现在,我们直接看 demo 吧,证据说话。

遇到应付你的面试官你怎么办?

建表语句如上所示,然后添加几条测试数据。

遇到应付你的面试官你怎么办?

然后,EXPLAIN 一下。

遇到应付你的面试官你怎么办?

执行计划截图如下所示:
遇到应付你的面试官你怎么办?

如果,我用 b,c 呢?

遇到应付你的面试官你怎么办?

执行计划如下所示:

遇到应付你的面试官你怎么办?

相当于全表扫描。

以此类推,你再用一下 (b,c)、(a,c)、(c,a)、(c,b) 等组合试一下。你会发现有一个规律,最左匹配原则。index(a,b,c) 相当于 index(a)、index(a,b)、index(a,b,c) 三个索引。

根据我们上面的表,我们分别执行:

遇到应付你的面试官你怎么办?

你会发现,只有第一条能使用索引,其他两条都不能按照索引查找。

但,这个时候,你千万不要下结论,说:第二条,第三条查询就不会走索引。因为有一种情况,它们还是会走索引的,那就是当表中只有 a,b,c 三个字段时。

所以,在回答问题时,你也别像我一样,回答的那么肯定。你先说个模糊答案,走不走索引,优化 SQL 看看 EXPLAIN,别去死记硬背。然后,再说,如果没记错的话,应该怎样怎样?

有时候啊,当一起面试的人多的时候,很可能会所以找一个人应付你。因为,真正的面试官忙不过来。这种情况,你会咋办?欢迎留言评论!

上一篇:MongoDB实战篇(七):使用索引


下一篇:explain 之 table || explain 之 type