SQL Server执行计划问题

时间:2011-09-12 16:03:23

标签: sql sql-server sql-server-2005 sql-server-2008

我有两台我正在开发的服务器而且我不是DBA,但是我们没有,所以我试图弄清楚我遇到的一些性能问题。本地我安装了SQL Server 2008 R2,当我使用的ORM运行查询时,它会在不到一秒的时间内返回结果。当我在我们的开发服务器上使用SQL Server 2005运行完全相同的查询时,它需要一分钟。我已经看了两个执行计划,主要的事情是查询的最后两行有一个order by语句。在2005服务器上,这是100%的成本。在2008服务器上它的成本为0%。我有什么设置可以忽略吗?两个服务器中的数据大致相同,索引/键/等相同.....因为本地副本只是从备份中恢复。

我最好的猜测是2005服务器正在对所有表进行排序,然后给我结果(200行)。 2008服务器获取所有结果然后对其进行排序的位置。 (也有200个结果。)

链接到缓慢的执行计划:http://pastebin.com/sUCiVk8j

链接到快速执行计划:http://pastebin.com/EdR7zFAn

我会发布查询,但这是令人讨厌的,因为我有一堆包含它的实体框架和生成查询的实体框架。

提前谢谢。

编辑:我在运行的SQL服务器上打开了任务管理器,在执行此查询期间CPU达到了100%。

编辑:向jsfiddle.net添加了XML版本。因为尺寸,pastebin不允许我这样做。刚刚使用CSS窗口的XML。

实际2008R2:http://jsfiddle.net/wgsv6/2/ 2005年实际:http://jsfiddle.net/wgsv6/3/

2 个答案:

答案 0 :(得分:0)

很难说没有看到查询,但你是否可能在慢速服务器上缺少一个INDEX?

答案 1 :(得分:0)

开发服务器上的统计信息可能已过期。