职业经验 总结篇:了解 sql 的执行顺序和执行过程

小巴哥 · 2023年02月08日 · 最后由 小巴哥 回复于 2023年02月08日 · 4394 次阅读

写在前面

学习数据库,刚开始有的同学可能从增删改查开始,这样可能是更利于应用,但是如果想解决数据库常见的问题或者对 sql 进行优化等方面,那必须从数据库的执行过程和执行顺序开始学习,只有系统的掌握了数据库执行过程和执行顺序,才能真正理解为什么这么写 sql 能提升查询效率。

执行过程

根据不同的数据库类型,可能执行过程会有所差异,这里以 mysql 为主,回答这个问题。
sql 语句的执行过程,

  • 首先通过连接器与服务端进行连接
  • 第二服务端对 sql 进行解析,查询缓存中是否有该 sql ,如果有,走缓存数据(这个就是为什么 sql 第二次执行会比第一次执行要快的原因)
  • 第三步,检查器进行语法、语义检查,如果出现语法语意错误,会在这个部分给出提示
  • 第四步,优化器选择做快速的执行方式
  • 第五步,执行器,通过存储引擎进行执行,这个就是 sql 的完整执行过程

听了这些是不是对 sql 有了进一步的认识呢?

执行顺序

sql 语言和其他语言有所不同,就是 sql 虽然数据库种类有很多,除了非关系行数据库外,sql 语言基本上是通用的,所以,sql 的执行顺序也是相同的。

  • 1、from 子句组装来自不同数据源的数据;
  • 2、where 子句基于指定的条件对记录行进行筛选;
  • 3、group by 子句将数据划分为多个分组;
  • 4、使用聚集函数进行计算;
  • 5、使用 having 子句筛选分组;
  • 6、计算所有的表达式;
  • 7、select 的字段;
  • 8、使用 order by 对结果集进行排序。

总体来说,sql 的执行顺序是这样的,from + (table) 2.where + (where 条件) 3.group by +(group by list) 4.having +(having 条件) 5.select + (select list) 6.order by + (order by 的条件)。

引用

如果大家想学习 sql 怎么优化,也可以看下我之前的文章,测试开发 - 一天一个面试题 8️⃣之 sql 优化问题
如果想了解面试问题,数据库的使用,可以看下这一篇一天一个面试题 9️⃣之数据库是怎么使用或者什么情况使用数据库

写在最后

我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!

共收到 1 条回复 时间 点赞

大家有什么想了解的内容可以留言回复给我,进我自己能力给大家分享

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册