SQL查询中INSERT,DELETE和UPDATE的逻辑查询处理阶段

时间:2016-02-29 05:11:32

标签: sql sql-server sql-server-2008

我很好奇SQL查询的逻辑查询处理阶段。

对于SELECT个查询,逻辑查询处理阶段顺序为:

  1. FROM
  2. ON
  3. OUTER
  4. WHERE
  5. GROUP BY
  6. CUBE | ROLLUP
  7. HAVING
  8. 选择
  9. DISTINCT
  10. ORDER BY
  11. TOP
  12. INSERTUPDATEDELETE的订单是什么?

3 个答案:

答案 0 :(得分:1)

如果您想知道实际的查询处理顺序是什么,请查看执行计划。这将逐步告诉您SQL Server正在做什么。

https://technet.microsoft.com/en-us/library/ms178071(v=sql.105).aspx

答案 1 :(得分:0)

SQL Server:Source

  1. FROM
  2. ON
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. WITH CUBE或WITH ROLLUP
  7. HAVING
  8. 选择
  9. DISTINCT
  10. ORDER BY
  11. TOP

答案 2 :(得分:0)

我有同样的问题,在互联网上找不到答案。 所以我试图从逻辑上得出答案。 这是一个简单的UPDATE语句(表的别名为a):

UPDATE tbl_employees a
  SET a.Name = 'Anna'
  WHERE a.Id = 122;

显然,在识别表之前是否可以执行SET和WHERE,因此UPDATE必须是第一个逻辑步骤。证明:别名正在运行(在Microsoft Access中)。

在应用SET语句之前,需要知道要应用它的记录。所以WHERE必须作为第二个逻辑步骤(省略WHERE将改变表中的所有记录)

在WHERE过滤的记录集上应用SET语句必须是第三步。

总结一下,逻辑处理顺序必须是:

  1. 更新(〜相当于FROM)
  2. WHERE
  3. SET(〜相当于SELECT)
  4. 任何其他顺序似乎都是荒谬的(您可以假设其他任何顺序吗?)。

    再一次,它是我自己的逻辑推导。我不确定。我会批评任何链接到严重的互联网资源。