在 MS SQL Server 中,将行插入表变量突然变得非常缓慢

Posted

技术标签:

【中文标题】在 MS SQL Server 中,将行插入表变量突然变得非常缓慢【英文标题】:In MS SQL Server, inserting Rows into a table variable became painfully slow all the sudden 【发布时间】:2010-11-30 18:04:24 【问题描述】:

在 MS SQL Server 2008 中,将行插入表变量突然变得非常缓慢。 表变量以及查询和插入行的创建是在一个存储过程中完成的,它变得非常慢。

查询几乎立即完成,返回一个小集合(10 行,1 列 int),并且需要 50 秒以上的时间才能插入到表变量中。 我切换回临时表,这很好,操作在几微秒内发生。

【问题讨论】:

我们遇到了类似的问题,从连接中插入表变量非常慢。当只从一个源表中插入,然后在另一条语句中更新剩余的列时,它再次加速。 【参考方案1】:

来自table (Transact-SQL)

修改表变量的查询 不生成并行查询执行 计划。 性能可能会受到影响 当表变量非常大时,或 复杂查询中的表变量, 被修改。在这些情况下, 考虑使用临时表

【讨论】:

以上是关于在 MS SQL Server 中,将行插入表变量突然变得非常缓慢的主要内容,如果未能解决你的问题,请参考以下文章

如何从MS SQL Server 2012中的不同表中减去连续的行?

无法将行添加到 SQL Server 视图

MS Access SQL 将行转换为列

通过链接到SQL Server数据库的MS Access以多对多关系插入数据(中间表)

SQL Server 从表变量插入临时表

带有管理工作室的 MS SQL Server - 如何使用其数据(作为插入语句)编写表的脚本? [复制]