SQL执行顺序

手写顺序

我们可以将手写SQL时遵循的格式归结如下:

123456789101112131415 select distinct from join on where group by having order by limit ,
  • distinct,用于对查询出的结果集去重(若查出各列值相同的多条结果则只算一条)
  • join,关联表查询,若将两个表看成两个集合,则能有7种不同的查询效果(将在下节介绍)。
  • group by,通常与合计函数结合使用,将结果集按一个或多个列值分组后再合计
  • having,通常与合计函数结合使用,弥补where条件中无法使用函数
  • order by,按某个标准排序,结合asc/desc实现升序降序
  • limit,如果跟一个整数n则表示返回前n条结果;如果跟两个整数m,n则表示返回第m条结果之后的n条结果(不包括第m条结果)

    MySQL引擎解析顺序

    而我们将SQL语句发给MySQL服务时,其解析执行的顺序一般是下面这样:
123456789101112131415161718 from on join where group by having select order by limit offset,rows


19.mysql高级 - sql执行顺序 - 图1

了解这个对于后续分析SQL执行计划提供依据。

————————————————

原文链接:https://zhenganwen.top/posts/9982416a/