【问题标题】:What is difference between join syntax in T-SQL [duplicate]T-SQL中的连接语法有什么区别[重复]
【发布时间】:2015-09-03 05:58:36
【问题描述】:

这是我的SQL 查询:

SELECT
   last_name,
   department_name
FROM
   employees e,
   departments d
WHERE
   e.department_id = d.department_id;

还有:

SELECT
   last_name,
   department_name
FROM
   employees e INNER JOIN
   departments d ON e.department_id = d.department_id;

这有什么区别?
SQL Server 中哪个查询更好更快?

【问题讨论】:

  • 这是隐式和显式连接表示法,与 T-SQL 或 PL/SQL 无关。
  • @suslov 这之间没有什么不同吗?和等于?
  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式(您的示例 #1)已替换为 proper ANSI @ ANSI-92 SQL 标准(20 多年前 前)中的 987654325@ 语法,不鼓励使用

标签: sql sql-server performance tsql


【解决方案1】:

性能方面或结果方面应该没有区别。使用 SQL Server,查询优化器实际上将您的查询转换为找到的最佳执行计划。你们两个查询最终都会成为相同的执行计划。

如果使用 SQL Server,请在打开“显示执行计划”选项的情况下运行它们。

这将告诉您它们是如何执行的(如果有任何差异的话)以及相对的性能差异。

正如其他人所说,首选一个,但基于语法而不是性能。

【讨论】:

  • 不错的建议,但它实际上并没有回答问题。这就是 cmets 的用途。
【解决方案2】:

这有什么区别?

AFAIK,两者都在做INNER JOIN,第一个使用Implicit JOIN syntax,而第二个使用explicit join syntax

我不希望它们之间有任何性能差异,但是使用explicit join syntax 的第二种查询方式比第一种方式更推荐,因为它易于阅读,并且清楚地表明了您要执行的操作。此外,第一种写作风格是 old style join 语法。

【讨论】:

  • 是的,你的权利。顺便说一句,两者都只是 SQL,而不是 T-SQL 或 PL/SQL。
猜你喜欢
  • 2010-11-21
  • 2013-08-25
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 2011-07-22
  • 2011-05-23
  • 2017-02-02
  • 2019-08-08
相关资源
最近更新 更多