【发布时间】:2010-01-13 01:47:18
【问题描述】:
这是不是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]
优于:
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]
第二个是 LINQ2SQL 查询的结果。仍在寻找重新编写 LINQ 表达式的方法...
示例中最优化的 SQL 查询是什么?
你的想法?谢谢!
【问题讨论】:
-
没有安装 SQL Profiler...很遗憾
-
您不需要 Profiler。只需在运行查询之前使用 SET SHOWPLAN_TEXT。
-
或者按 ctrl-K(或者 ctrl-M,我不记得了)
-
第一个维护成本更低
-
@dan - 不是真的。生成第二个。它的成本会低得多。
标签: sql sql-server-2005 linq-to-sql database