【问题标题】:SQL server 2012 performance issue against sql server 2008 r2针对 sql server 2008 r2 的 SQL server 2012 性能问题
【发布时间】:2014-03-18 14:04:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多