【问题标题】:Sql Server 2016 Temp Table or Table Variable inside WHILE LoopWHILE 循环内的 Sql Server 2016 临时表或表变量
【发布时间】:2018-02-24 12:43:49
【问题描述】:

我有一个 while 循环,它将运行 300M 次。

每次该循环运行时,它创建一个包含两列的 1 行表,在循环结束时该表被 删除,一旦循环重新开始时,再次重建此表,其中 1 行有两列,但数据不同。

目前我正在使用一个表格变量,但考虑到所有这些创建和擦除,我想知道您对我应该使用哪种表格来提高性能的看法。

【问题讨论】:

  • 为什么不只使用两个简单的变量?
  • 虽然 sql server 中的循环执行了 3 亿次,hmmmmm,你担心它的性能 hmmmmm,真的 :)
  • @M.Ali 在我的情况下,我仅限于几种方法,这是其中之一。从我所有更糟糕的情况中,我必须找到更糟糕的情况:x
  • 您可能会错过更好的选择。为什么不问一个关于如何实现最终目标的问题,并包括任何限制背后的原因。
  • @MartinSmith 是的,也许你是对的。无论如何,我有 4 列,id| idguid |家长指导 |文件路径我需要一个包含 4 列和 27 个其他列的最终表,这些列表示给定 400 万行的最大深度级别。第一种方法 - CTE 第二种方法 - 逐行拆分路径到其他列 第 3 种 - 使用 while 逻辑执行与之前相同的逻辑 第 4 种 - 27 自联接无论如何,自联接可能会获胜,但我想涵盖可能性

标签: sql-server performance ssms temp-tables table-variable


【解决方案1】:

在您的情况下,关键是使用相同的表变量,因为它是在内存中处理的。临时表会慢得多。

谢谢。

【讨论】:

  • 这种差异是一个普遍的神话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2016-08-17
  • 2020-03-27
相关资源
最近更新 更多