精华内容
下载资源
问答
  • sql查询语句的执行顺序
    2015-08-21 10:36:00
    Select 查询语句是实际工作最常用的SQL语句了,下面是Select的语句的执行顺序,大家可以参考Select语句的执行顺序来优化高效SQL语句。
    个人觉得写出高效查询语句的一个指导方针是:
    尽可能优先缩小查询范围。
    
    
    (8)SELECT   (9) [DISTINCT]
    
    
    
    
     (11) [Top n] 传回结果列表[INTO 新数据表名称]
    
    
    
    
     (1) FROM 数据表
    
    
    
    
     (3) [INNER | LFT | RIGHT] JOIN 数据表 (2) ON <数据表JOIN的条件>
    
    
    
    
     (4) [WHERE <过滤条件>]
    
    
    
    
     (5) [GROUP BY <群组语法>]
    
    
    
    
     (6) [WITH {CUBE | ROLLUP}
    
    
    
    
     (7) [HAVING <过滤条件>]
    
    
    
    
    (10) ORDER BY <排序列表> [ASC | DESC]]


    更多相关内容
  • sql 查询语句执行顺序

    千次阅读 2021-05-29 20:50:09
    了解 sql执行顺序是很必要的,执行顺序不同可能查询到的结果最后也会不一样。 select 语句的完整语法如下: SELECT    DISTINCT < select_field >   FROM < ...

    了解 sql 的执行顺序是很必要的,执行顺序不同可能查询到的结果最后也会不一样。

    select 语句的完整语法如下:

    SELECT
       DISTINCT < select_field >  
    FROM
      < left_table >  < join_type >
      JOIN < right_table >  ON < join_condition >  
    WHERE
      < where_condition >  
    GROUP BY
      < group_by_field >  
    HAVING
      < having_condition >  
    ORDER BY
      < order_by_field >  
    LIMIT < limit_number>
    

    执行顺序

    FROM
    <表名> # 笛卡尔积
    ON
    <筛选条件> # 对笛卡尔积的虚表进行筛选
    JOIN <join, left join, right join...> 
    <join表> # 指定join,用于添加数据到on之后的虚表中,例如left join会将左表的剩余数据添加到虚表中
    WHERE
    <where条件> # 对上述虚表进行筛选
    GROUP BY
    <分组条件> # 分组
    <SUM()等聚合函数> # 用于having子句进行判断,在书写上这类聚合函数是写在having判断里面的
    HAVING
    <分组筛选> # 对分组后的结果进行聚合筛选
    SELECT
    <返回数据列表> # 返回的单列必须在group by子句中,聚合函数除外
    DISTINCT
    # 数据除重
    ORDER BY
    <排序条件> # 排序
    LIMIT
    <行数限制>
    

    这些步骤执行时,每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。


    SELECT 各个阶段分别干了什么:

    1. FROM 阶段

    FROM 阶段标识出查询的来源表,并处理表运算符。在涉及到联接运算的查询中(各种 JOIN),主要有以下几个步骤:

    • 求笛卡尔积。不论是什么类型的联接运算,首先都是执行交叉连接(CROSS JOIN),求笛卡儿积(Cartesian product),生成虚拟表 VT1-J1。

    • ON 筛选器。  这个阶段对上个步骤生成的 VT1-J1 进行筛选,根据 ON 子句中出现的谓词进行筛选,让谓词取值为 true 的行通过了考验,插入到 VT1-J2。

    • 添加外部行。如果指定了 OUTER JOIN,如 LEFT OUTERJOIN、RIGHT OUTER JOIN),还需要将 VT1-J2 中没有找到匹配的行,作为外部行添加到 VT1-J2 中,生成 VT1-J3。如果 FROM 子句包含两个以上表,则对上一个连接生成的结果表 VT1-J3 和下一个表重复依次执行 3 个步骤,直到处理完所有的表为止。

    经过以上步骤,FROM 阶段就完成了。


    2. WHERE 阶段

    WHERE 阶段是根据 <where_predicate> 中条件对 VT1 中的行进行筛选,让条件成立的行才会插入到 VT2 中。**此时数据还没有分组,所以不能在 WHERE 中出现对统计的过滤。


    3. GROUP BY 阶段

    GROUP 阶段按照指定的列名列表,将 VT2 中的行进行分组,生成 VT3。最后每个分组只有一行。在 GROUP BY 阶段,数据库认为两个 NULL 值是相等的,因此会将 NULL 值分到同一个分组中。


    4. HAVING 阶段

    该阶段根据 HAVING 子句中出现的谓词对 VT3 的分组进行筛选,并将符合条件的组插入到 VT4 中。COUNT(expr) 会返回 expr 不为 NULL 的行数,count(1)、count(*) 会返回包括 NULL 值在内的所有数量。


    5. SELECT 阶段

    这个阶段是投影的过程,处理 SELECT 子句提到的元素,产生 VT5。这个步骤一般按下列顺序进行:

    • 计算 SELECT 列表中的表达式,生成 VT5-1。

    • 若有 DISTINCT,则删除 VT5-1 中的重复行,生成 VT5-2。


    6. ORDER BY 阶段

    根据 ORDER BY 子句中指定的列明列表,对 VT5-2 中的行,进行排序,生成 VT6。如果不指定排序,数据并非总是按照主键顺序进行排序的。NULL 被视为最小值。


    7. LIMIT 阶段

    取出指定行的记录,产生虚拟表 VT7,并返回给查询用户。LIMIT n, m 的效率是十分低的,一般可以通过在 WHERE 条件中指定范围来优化 WHERE id > ? limit 10。

    展开全文
  • SQL查询语句执行顺序如下: (7) SELECT (8) DISTINCT <select_list> (1) FROM (3) <join> JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) LIMIT 前期准备工作 1、新建一个测试...
  • SQL查询语句逻辑执行顺序

    1.查询语句的逻辑执行顺序

    执行1:from

    行2:on

    行3:join

    行4:where

    行5:group by

    执行6:having

    执行7:select

    执行8:distinct

    执行9:order by

    执行10:top

    2.实际写查询语句的顺序

    执行7: select 

    执行8: distinct <select_list>

    执行1: from <left_table>

    执行3<join_type> join <right_table>

    执行2:on  <join_condition>

    执行4:where  <where_condition>

    执行5:group by <group_by_list>

    执行6:having <having_condition>

    执行9:order by <order_by_condition>

    执行10top <limit_number>

    展开全文
  • 本文将详细介绍数据库总结--SQL语句执行顺序,需要了解更多的朋友可以参考下
  • 目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from ...
  • SQL语句执行顺序

    千次阅读 2022-05-10 08:18:14
    SQL

    SQL Select 语句完整的执行顺序:

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

    SQL 语言不同于其他编程语言的最明显特征是处理代码的顺序。 在大多数据库语言中,代码按编码顺序被处理。但在 SQL 语句中,第一个被处理的子句式 FROM,而不是第一出现的 SELECT。

    SQL 查询处理的步骤序号:

    (1) FROM <left_table> (2) <join_type> JOIN <right_table> (3) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) WITH {CUBE | ROLLUP} (7) HAVING <having_condition> (8) SELECT (9) DISTINCT (9) ORDER BY <order_by_list> (10) <TOP_specification> <select_list>

    以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应 用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句, 将跳过相应的步骤。

    逻辑查询处理阶段简介:

    1、 FROM:对 FROM 子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表 VT1。 2、 ON:对 VT1 应用 ON 筛选器,只有那些使为真才被插入到 TV2。 3、 OUTER (JOIN):如果指定了 OUTER JOIN(相对于 CROSS JOIN 或 INNER JOIN),保留表中未找到 匹配的行将作为外部行添加到 VT2,生成 TV3。如果 FROM 子句包含两个以上的表,则对上一个联接生成的 结果表和下一个表重复执行步骤 1 到步骤 3,直到处理完所有的表位置。 4、 WHERE:对 TV3 应用 WHERE 筛选器,只有使为 true 的行才插入 TV4。 5、 GROUP BY:按 GROUP BY 子句中的列列表对 TV4 中的行进行分组,生成 TV5。 6、 CUTE|ROLLUP:把超组插入 VT5,生成 VT6。 7、 HAVING:对 VT6 应用 HAVING 筛选器,只有使为 true 的组插入到 VT7。 8、 SELECT:处理 SELECT 列表,产生 VT8。 9、 DISTINCT:将重复的行从 VT8 中删除,产品 VT9。 10、 ORDER BY:将 VT9 中的行按 ORDER BY 子句中的列列表顺序,生成一个游标(VC10)。 11、 TOP:从 VC10 的开始处选择指定数量或比例的行,生成表 TV11,并返回给调用者。 where 子句中的条件书写顺序

    转载自:小马哥的故事

    展开全文
  • 关于SQL语句执行顺序

    万次阅读 多人点赞 2022-04-22 00:11:02
    关于SQL语句执行顺序,from where group by having select order by limit
  • SQL语句执行顺序 SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句。 SQL语句执行顺序 从这个顺序中我们可以发现,所有的查询语句都是从FROM开始执行的。在实际执行过程中,每个步骤都会为下一个步骤...
  • SQL查询语句执行顺序解析

    千次阅读 2019-09-29 11:57:08
    SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句。 从这个顺序中我们可以发现,所有的查询语句都是从FROM开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下...
  • MySQL,SQL语句执行顺序

    千次阅读 2021-01-19 16:30:59
    1.SQL执行顺序:select 考生姓名, max(总成绩) asmax总成绩fromtb_Gradewhere 考生姓名 is not nullgroup by考生姓名having max(总成绩) > 600order by max总成绩(1). 首先执行 FROM 子句, 从 tb_Grade 表组装...
  • sql语句查询顺序

    2021-11-24 08:28:40
    sql 查询语句执行顺序可以为为查询的性能优化处理打个基础,可能面试也会遇到,今天学了学sql查询语句的执行顺序,分享出来 Sql 执行顺序 from on join where group by agg_func(column or expression) having ...
  • Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序
  • sql语句执行顺序

    万次阅读 多人点赞 2019-06-23 09:18:23
    sql语句定义和执行顺序 摘自《MySQL技术内幕:SQL编程》 sql语句定义的顺序 (1) SELECT (2)DISTINCT<select_list> (3) FROM <left_table> (4) <join_type> JOIN <right_table> (5) ON <...
  • 今天在写一条语句的时候,在查询分析器里边执行 要用10s,换用另外一种写法只用少于1s的时间,同事说是因为Sql句语执行顺序的原因。之前看过一点相 关的书,有一点印象,到网上找了资料,学习下。 逻辑查询处理步骤 ...
  • SQL 查询执行顺序

    2021-12-20 16:33:00
    执行顺序: from > where(分组前的过滤) > group by > having(分组后的过滤) > order by > select(返回最后符合条件的数据); 1.where 子句优先执行于聚合语句(sum,min,max,avg,count)。 2.聚合...
  • hive sql 语句正确执行顺序

    千次阅读 2021-03-14 16:33:29
    执行顺序:from ..on .. join .. .. where .. select .. group by .. having .. order by... limit ... map阶段 from 加载,进行表的查找和加载 where过滤 select查询 Reduce阶段 group by :对map端发来的文件...
  • 熟练掌握sql语句执行顺序,才能避免编程中各种bug和错误。
  • Mysql----SQL查询语句执行顺序

    千次阅读 2016-08-22 16:17:17
    SQL查询语句执行顺序
  • 1.MySql:其条件执行顺序是 从左往右,自上而下; 2.Oracle:其条件执行顺序是从右往左,自下而上。
  • 关于sql和MySQL的语句执行顺序(必看)

    万次阅读 多人点赞 2016-03-29 12:15:09
    目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (3)...
  • Mysql中查询语句执行顺序

    千次阅读 2022-06-16 11:49:55
    MySQL语句执行顺序
  • SQL 语句执行顺序跟其语句的语法顺序并不一致 一般而言 SQL 语句的语法顺序是: SELECT[DISTINCT] FROM WHERE GROUP BY HAVING UNION ORDER BY 其执行顺序为: FROM WHERE GROUP BY HAVING SELECT DISTINCT UNION...
  • SQL查询语句执行顺序

    千次阅读 2018-11-05 12:24:22
    SQL查询语句执行顺序 昨天写了份去年数据库的期中考试卷,其中有一题选择题要求选出查询语句select–from–where–group by–having–order by的执行顺序,这里做一下总结 执行顺序 查询语句中用到的关键词...
  • SQL执行顺序

    万次阅读 多人点赞 2021-03-23 10:26:36
    SQL语句执行顺序   结合上图,整理出如下伪SQL查询语句。   从这个顺序中我们可以发现,所有的查询语句都是从 FROM 开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个...
  • HQL的语句执行顺寻与SQL有一定的差别 Hive SQL From - where - join - on - select - group by - select - having - distinct - order by - limit - union/union all Map 阶段: 执行 from,进行表的查找与...
  • 执行SQL语句的优先级顺序

    千次阅读 2022-04-07 21:31:46
    执行顺序为从后往前、从右到左。数据量较大的表尽量放在后面。 WHERE 执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE字句的最右。 GROUP BY 执行顺序从右往左分组,最好在GROUP BY前使用...
  • SQL语句嵌套时的执行顺序

    千次阅读 2018-04-20 08:11:23
    1.原语句:SELECT ID,NAME,STATES,(SELECT STATES FROM ITEM WHERE ID=T.ITEM_ID) AS ITEM_END_FLAGFROM RESULT TWHERE 1=12.ITEM表中实际没有STATES列,但执行语句却没报错,并且ITEM_END_FLAG列的结果与STATES...
  • SQL查询语句的书写顺序、执行顺序和注意事项 1,SQL查询语句常用关键字 select 、from、where、group by、having、order by select :指定查看结果集中的那个列或列的计算结果 from :从哪张表查询数据 where :...
  • 引言 到目前为止,已经总结了常见的SQL子句,包括 SELECT 、FROM、JOIN ...ON、...除了上述这些子句,下面将会介绍另一个比较常用的子句 LIMIT ,并且总结一下SQL 语句执行顺序。 一、LIMIT 子句 LIMIT 子句...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 284,376
精华内容 113,750
关键字:

sql查询语句的执行顺序