只是在尝试优化SQL查询。
SELECT Code, COUNT(*)
FROM tblData
WHERE ListID = 380
GROUP BY Code该表包含1000万条记录。因此,查询通常需要4-5秒来查找SQL server2008 R2上的记录。我找到了另一种表达方式:
SELECT a.Code, COUNT(*)
FROM ( SELECT *
FROM tblData
WHERE ListID = 380
) a
GROUP BY a.Code虽然在我的测试中,它在完全相同的时间内产生结果。但我想知道这是比前一个快还是签证快。有什么想法吗?
发布于 2012-03-12 18:01:22
对于任何像样的查询优化器,这两个查询应该归结为完全相同的操作。所以你发现它们同时运行我一点也不惊讶。
我不认为你可以修改你的查询来使它运行得更快。当然,你能做的就是在ListID上建立一个索引--但我想你已经有了。
发布于 2012-03-12 18:08:33
正如@cornuz和@Wim所说,这两个查询应该是等价的。
但是,您可能会发现,具有两列索引(在ListId上,然后在代码上)会大大提高性能,因为
发布于 2012-03-12 18:06:42
在Management Studio中,选择这两个查询,然后单击“显示估计的执行计划”。一旦一个查询成本与50%不同,你就有了赢家(和输家)。
在通过Analyser之后,您的第二个查询看起来就是第一个查询的结果。我认为两者的表现完全相同。
https://stackoverflow.com/questions/9664903
复制相似问题