写在前面
学习数据库,刚开始有的同学可能从增删改查开始,这样可能是更利于应用,但是如果想解决数据库常见的问题或者对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 优化问题 - 掘金 (juejin.cn) 如果想了解面试问题,数据库的使用,可以看下这一篇测试开发-一天一个面试题9️⃣之数据库是怎么使用或者什么情况使用数据库 - 掘金 (juejin.cn)
写在最后
我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!