我有两台服务器正在开发,而且我不是DBA,但我们没有一台,所以我试图弄清楚我遇到的一些性能问题。在本地我安装了SQL Server 2008 R2,当我使用的ORM运行查询时,它会在不到一秒的时间内返回结果。当我使用SQL Server 2005在开发服务器上运行完全相同的查询时,需要花费一分多钟。我已经看过两者的执行计划,主要的事情是查询的最后两行有一个order by statement。在2005年的服务器上,这是成本的100%。在2008年的服务器上其成本的0%。我忽略了某种设置吗?两台服务器的数据大致相同,索引/键/等等......因为本地副本只是备份的还原。SQL Server执行计划问题
我最好的猜测是2005服务器正在整理所有表格,然后给我结果(200行)。 2008服务器获得所有结果并对其进行分类。 (200个结果还)
链接放缓执行计划:http://pastebin.com/sUCiVk8j
链接到快速执行计划:http://pastebin.com/EdR7zFAn
我会发布查询,但它是令人讨厌长,因为我有一大堆的包括和其生成查询的实体框架。
预先感谢您。
编辑:我打开SQL服务器上运行的任务管理器,CPU执行此查询期间100%。
编辑:添加到jsfiddle.net的XML版本。由于大小,pastebin不允许我。刚刚使用XML的CSS窗口。
实际2008R2:http://jsfiddle.net/wgsv6/2/ 2005年实际:http://jsfiddle.net/wgsv6/3/
发布执行计划 – JNK
对200个行进行排序不应该对此时间差异负责,因此估计的成本看起来不大。也许统计信息需要在2005服务器上更新。这两个版本计划中显示的成本仅仅是基于这些统计数据的估计值。计划中估计行与实际行之间的任何差异? –
也是这些实际或ESTIMATED执行计划? – JNK