我们的存储过程之一是使用 Cursor 来更新行。要更新的总行数从 1000 到 2000 不等。在我们的场景中,此存储过程需要 50 分钟才能完成更新。
我替换了 Cursor 并使用了 Table Variable。在任何时候,表变量也将包含 1000 到 3000 行。执行时,更新在 2 分钟内完成。
服务器是具有 64GB RAM 的 Windows Server 2012 64 位。SQL Server 2008
我想知道是否要用#TempTable 替换Table Variable?在上述场景中,Table Variable 工作正常。
我检查了一些关于表变量的帖子。一篇文章说 SQL Server 决定何时将表变量保留在内存中以及何时将其移动到 TempDB。
对于上面提到的配置,Table Variable什么时候会被移动到TempDB?
实际上 Temp 表和 Table 变量使用 tempdb(在 Tempdb 上创建)。请检查下面我将用来创建临时表和变量表的代码。并检查它们的创建位置。