哪个SQL查询更好?

ley*_*cua 5 sql database sql-server-2005 linq-to-sql

这是SQL查询语句:

SELECT p.id, p.[name], SUM(ps.sales_amount) AS GROSS_SALES
FROM products p
  LEFT OUTER JOIN product_sales ps ON p.id = ps.product_id
GROUP BY p.id, p.[name]
Run Code Online (Sandbox Code Playgroud)

优于:

SELECT SUM([t2].[value]) AS [SalesAmount], [t2].[id] AS [ProductId], [t2].[name] AS [ProductName]
FROM (
    SELECT (
        SELECT SUM([t1].[sales_amount])
        FROM [dbo].[product_sales] AS [t1]
        WHERE [t1].[product_id] = [t0].[id]
        ) AS [value], [t0].[id], [t0].[name]
    FROM [dbo].[products] AS [t0]
    ) AS [t2]
GROUP BY [t2].[id], [t2].[name]
Run Code Online (Sandbox Code Playgroud)

第二个是LINQ2SQL查询的结果.仍在寻找重写LINQ表达式的方法......

该示例中最优化的SQL查询是什么?

你的意见?谢谢!

Jer*_*nes 1

真正的答案是,如果不测量就无法判断。即使这样,除非您在现实的数据集上进行测量,否则您仍然无法真正知道。

查看这篇博客文章(不是我写的),其中生成的 SQL 看起来更糟糕,但性能却好得多。他的示例专门涉及子选择与连接,因此我认为它与您的情况非常相关。