如何调整SQL查询的执行顺序以优化性能?
- 内容介绍
- 相关推荐
本文共计1800个文字,预计阅读时间需要8分钟。
前言:了解SQL查询的执行顺序对我们解决一些问题非常有帮助,有时我们可能会疑惑为什么不能对分组的查询结果进行筛选。之前一直不是特别理解这个问题,在了解了SQL查询的执行顺序后,这个问题才有了答案。
前言
了解 SQL 查询的执行顺序对我们解决一些问题很有帮助,有时我们可能会疑惑为什么不能对分组的结果进行筛选这样类似的问题?之前一直不是理解这个问题,在了解了SQL 查询的执行顺序之后这个问题也就迎刃而解。在我们对 SQL 查询语句进行分析优化时,掌握执行顺序也是有一定帮助的。
一、理论顺序
上面是图示 SQL 的执行顺序,下面用列表列出:
- FROM
- ON
- JOIN
- WHERE
- GROUP BY
- CUBE | ROLLUP
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT
上面所列出的执行顺序能帮助我们解答一些问题:
- 为啥不能对窗口函数的执行结果进行过滤?
因为窗口函数在 SELECT 步骤执行,而这步是在 WHERE 和 GROUP BY 之后 - 可以对分组的结果进行筛选吗?
不可以,因为 GROUP BY 在 WHERE 之后执行 - 可以对分组后的结果进行排序吗?
可以,因为 ORDER BY 在 GROUP BY 之后。
本文共计1800个文字,预计阅读时间需要8分钟。
前言:了解SQL查询的执行顺序对我们解决一些问题非常有帮助,有时我们可能会疑惑为什么不能对分组的查询结果进行筛选。之前一直不是特别理解这个问题,在了解了SQL查询的执行顺序后,这个问题才有了答案。
前言
了解 SQL 查询的执行顺序对我们解决一些问题很有帮助,有时我们可能会疑惑为什么不能对分组的结果进行筛选这样类似的问题?之前一直不是理解这个问题,在了解了SQL 查询的执行顺序之后这个问题也就迎刃而解。在我们对 SQL 查询语句进行分析优化时,掌握执行顺序也是有一定帮助的。
一、理论顺序
上面是图示 SQL 的执行顺序,下面用列表列出:
- FROM
- ON
- JOIN
- WHERE
- GROUP BY
- CUBE | ROLLUP
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT
上面所列出的执行顺序能帮助我们解答一些问题:
- 为啥不能对窗口函数的执行结果进行过滤?
因为窗口函数在 SELECT 步骤执行,而这步是在 WHERE 和 GROUP BY 之后 - 可以对分组的结果进行筛选吗?
不可以,因为 GROUP BY 在 WHERE 之后执行 - 可以对分组后的结果进行排序吗?
可以,因为 ORDER BY 在 GROUP BY 之后。

