面试某大厂被问到“SELECT status FROM t”这条sql可行吗?我人瞬间懵了,当时只从区分度上胡诌了两句。
事后回想起来,笔者认为这大概是想问sql语句的执行过程吧。
1.首先这条SQL在缓存开启的前提下会先去查询缓存,命中则直接返回结果,未命中则进入分析器。
2.在分析器进行词法分析,分析每个字符串所代表的是什么。
3.在分析器中继续进行语法分析,分析语句的语法是否正确,错误返回错误信息,分析没错则进入优化器。
4.在优化器中则是语句的优化,优化选择索引、语句顺序。
5.最后交由执行器执行语句,返回结果。
最后这条语句是正确可行的,但是结合实际业务来说是没有意义的,单独查询一个status状态,在日常业务中不会用到,一般status这类字段会用枚举类或者保存在一张表中维护。
这是我后知后觉反应过来面试官可能想知道的,各位大佬有没有别的想法可以留下评论探讨一下。
有什么问题可以评论或者私信我,每日在线解(LIAO)疑(SAO)。
我是大誌,一位准备996的卑微码农🐶,觉得好用记得点赞收藏!!!