为什么@temp 表性能有时比#temp 表性能差?

O.O*_*O.O 6 sql-server-2008 temporary-tables

我最近在一个非常慢的存储过程中工作(运行需要 5 分钟)。我做了一个非常小的调整:

declare @tempTable table
(
  ...
)
insert into @tempTable
select .....
Run Code Online (Sandbox Code Playgroud)

select ... into #tempTable from someTable
Run Code Online (Sandbox Code Playgroud)

然后脚本在大约 2 秒内运行。什么可以解释这个时差?

Mar*_*inC 12

表变量没有与临时表相同的统计信息,通常假设它们只有 1 行。这种对行数的错误估计将使嵌套循环操作看起来像是最佳计划,但是当对大量行执行此操作时,成本可能比表扫描更容易。