只是尝试优化SQL查询。
SELECT Code, COUNT(*)
FROM tblData
WHERE ListID = 380
GROUP BY Code
该表包含1000万条记录。因此查询通常需要4-5秒才能在SQL SERVER 2008 R2上找到记录。我发现了另一种表达方式:
SELECT a.Code, COUNT(*)
FROM ( SELECT *
FROM tblData
WHERE ListID = 380
) a
GROUP BY a.Code
虽然在我的测试中它会在完全相同的时间产生结果。但我想知道这是否比前一个更快,反之亦然。有什么想法吗?
答案 0 :(得分:4)
使用任何体面的查询优化器,这两个查询应该归结为完全相同的操作。所以我发现它们在同一时间运行并不奇怪。
我认为您不能修改查询以使其运行得更快。当然,你可以做的是在ListID
上建立一个索引 - 但我希望你已经有了这个索引。
答案 1 :(得分:3)
正如@cornuz和@Wim都说的那样,这两个查询应该是等价的。
但是,您可能会发现使用两列索引(在ListId上然后是Code)会提高性能,因为
答案 2 :(得分:0)
在Management Studio中,选择两个查询并单击“显示估计执行计划”。只要一个查询成本与50%不同,您就会获胜(并且更宽松)。
第二个查询看起来是第一个查询通过Analyzer后的结果。我认为两者的表现完全相同。