【问题标题】:The Difference Inner Join Query差异内连接查询
【发布时间】:2014-02-04 11:09:18
【问题描述】:

我只是好奇,如果我有表 a 和表 b。

我写查询 1:

SELECT * FROM table a INNER JOIN table b ON table a.id = table b.id

我写查询 2:

SELECT * FROM table b INNER JOIN table a ON table b.id = table a. id

以上查询有什么区别?

谢谢

【问题讨论】:

  • 至少在结果上没有区别。
  • 呵呵...非常感谢

标签: sql sql-server inner-join


【解决方案1】:

使用 INNER JOIN 时,返回的结果集没有区别,但使用 SELECT * 时的列顺序除外,即未明确提及列。

SELECT * 
FROM table a 
     INNER JOIN table b 
        ON table a.id = table b.id

返回 tableA 中的列,后跟 tableB

中的列
SELECT * 
FROM table b 
     INNER JOIN table a 
             ON table b.id = table a. id

返回 tableB 中的列,然后返回 tableA

中的列

【讨论】:

  • 这是正确的。此外,在 SQL Server 上,由于查询优化器,无论每个表的大小如何,两个查询的性能都一样好。
  • 我认为stackoverflow的用户对sql server有一定的了解。
【解决方案2】:

第二个表与第一个表匹配数据。 所以最好把小桌子放在第二位。

【讨论】:

  • 不一定,因为没有where...它仍然从连接匹配的两个表中提取所有记录...如果条件,我将确保从首先列出的较大表中进行索引和查询.
  • 对于主要的DBSM没有区别,引擎会根据内部统计信息选择执行嵌套循环的顺序。对于 MS SQL,我敢肯定它至少与七个(里程可能会有所不同)连接不起作用。
  • 是的,优化器会以不同的方式做出决定。
猜你喜欢
  • 2014-05-20
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2016-08-19
  • 2010-09-29
  • 2022-12-19
相关资源
最近更新 更多