代码之家  ›  专栏  ›  技术社区  ›  treaschf

SQL 2005在单个CPU上运行我的查询,因此速度很慢

  •  1
  • treaschf  · 技术社区  · 14 年前

    我有一个查询,它连接6个表,生成80万行,并将它们插入到一个表中。

    我在一台8核机器上对SQL2005标准运行这个查询,在这个机器上没有其他工作负载在运行。SQL服务在运行这个查询时只使用一个CPU核心(使用那个CPU 100%),这样查询运行了将近4分钟。

    如何使我的查询使用所有可用的CPU?

    重建统计数据没有帮助。有时,这个查询使用了所有的CPU-S并运行得更快。

    (查询还使用了两个标量TSQL函数,但这不应该是问题,因为它以前不是。这些函数只在计算中使用它们的参数,它们不访问数据库中的任何表。因此,使用这些函数不应阻止查询的并行化。)

    (打开数据库上的“读提交快照隔离”是否会导致此行为?在我打开它之前,查询运行正常,从那时起它就在单个CPU上运行。)

    1 回复  |  直到 14 年前
        1
  •  2
  •   VladV    14 年前

    看看查询计划,它可能会让您了解正在发生的事情。 您还可以在这里发布查询及其计划(以文本模式),供其他人分析。

    尝试强制另一个事务隔离级别(设置事务隔离级别为“已提交”)并比较查询计划-它将告诉您更改默认隔离是否导致了问题。

    以防万一,你可能想检查一下 max degree of parallelism 选项(它可以设置为服务器范围的选项或特定查询的maxdop提示)。