针对sql server 2008 r2的SQL server 2012性能问题

时间:2014-03-18 14:04:43

标签: sql-server performance sql-server-2012

我们将数据库从sql server 2008 r2迁移到sql server 2012.我们有一个大的存储过程,它使用超过15个表来填充数据。这个存储过程在以前的服务器中只用了1秒钟,它具有非常低的资源(24 GB ram 1 ghz处理器)。安装了sql server 2012的新服务器(此服务器具有接近约10倍的高资源)在10秒内执行相同的存储过程。当我在此服务器中检查执行计划时,它会显示许多类型转换警告。任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不是SQL Server 2012专家,但对应pages about conversion warnings 问题是您可能在不同的表中有列,这些列用作连接键,但不具有相同的类型。例如。 table1.categoryId为int,table2.categoryId为varchar,并且在这两列上都有连接。 SQL服务器似乎进行了隐式转换(int到varchar或其他),这是一个性能杀手。

对应于this page,当您在查询中使用不同的数据类型时,也会发生这种情况。例如,当table1.postalcode为int并使用SELECT * from table1 where postalcode in ('123', '234')时。这里IN-Clause中的值是字符串,而table-row是int。

解决方案是更改行的类型并将数据迁移到新表。