0

SQL Server 2008 r2 的交叉连接查询执行速度很慢。它在我们的系统中造成了太多问题。Sql server 2012 上的迁移可以解决交叉连接问题。早些时候我们使用的是 sql 2005,我们没有这样的问题。但我们现在不能搬回去。我不知道这是否解决了我的问题。在执行交叉连接查询方面,2012 年的性能优于 2008 年 r2 吗?

select '37' as orddate,brand from maindb1.dbo.contract_report where jobnumber in (select      distinct [Job Number] from maindb1.dbo.v_alltype_st where [day] like '%2012' and DATEPART(WEEK,CONVERT(datetime,[DAY],103))='37') and brand<>'' and brand<>'N/A' 

以上运行约 7 分钟,以下运行约 32 秒

select brand from maindb1.dbo.contract_report where jobnumber in (select distinct [Job Number] from maindb1.dbo.v_alltype_st where [day] like '%2012' and DATEPART(WEEK,CONVERT(datetime,[DAY],103))='37') and brand<>'' and brand<>'N/A' 

唯一的区别是上面有一个额外的字段。

一个是表,一个是视图。这不是唯一的例子。

4

1 回答 1

1

如果您在 2008 R2 上看到您在 2005 年没有看到的性能问题,并且此数据库是直接升级或通过备份/恢复或分离/附加迁移的,您应该确保:

(a) 手动更新所有相关表格的统计数据

(b) 确保将兼容性级别设置为 100

一般来说,SQL Server 2012 应该提供底层性能增强,主要是由于优化器的改进。我不相信交叉连接有任何特定的增强,但我也不知道源代码,所以无论如何都很难知道。

于 2012-09-14T12:59:31.250 回答