INNER JOIN vs INNER JOIN(SELECT.FROM)

Kar*_*run 52 sql sql-server join inner-join

同一查询的这两个版本在性能方面有什么不同吗?

--Version 1
SELECT p.Name, s.OrderQty
FROM Product p
INNER JOIN SalesOrderDetail s on p.ProductID = s.ProductID

--Version 2
SELECT p.Name, s.OrderQty
FROM Product p
INNER JOIN (SELECT ProductID, OrderQty FROM SalesOrderDetail) s on p.ProductID = s.ProductID
Run Code Online (Sandbox Code Playgroud)

我听说(由DBA)说版本2更快,因为它在内部SELECT语句中仅获取查询所需的列.但这似乎没有意义,因为查询性能(据我所知)是基于受影响的行数和返回的最终列列表.

两者的查询计划是相同的,所以我猜这两者之间没有任何区别.

我对么?

Chr*_*ter 39

你是对的.你做了正确的事情,检查查询计划,而不是试图猜测优化器.:-)


Mad*_*nan 11

没有太大的区别.当你有一些应该在它之外加入的计算,聚合等时,如何更容易

--Version 2 
SELECT p.Name, s.OrderQty 
FROM Product p 
INNER JOIN 
(SELECT ProductID, SUM(OrderQty) as OrderQty FROM SalesOrderDetail GROUP BY ProductID
HAVING SUM(OrderQty) >1000) s 
on p.ProductID = s.ProdctId 
Run Code Online (Sandbox Code Playgroud)

  • 是的,当涉及计算或聚合时,我认为这种方法更容易,但我的问题是针对我提出的案例.谢谢! (4认同)