包含临时表中的值会减慢查询速度

时间:2011-06-07 17:41:53

标签: sql-server

我有一个存储过程,它使用临时表在select子句中进行一些连接。 select子句包含临时表的Id列中的值,如下所示:

CREATE TABLE #TempTable 
(
Id INT PRIMARY KEY,
RootVal INT
)

Select如下所示:

Select value1, value2, #TempTable.Id AS ValKey 
  From MainTable INNER JOIN #TempTable ON  MainTable.RootVal = #TempTable.RootVal 

查询需要一分钟才能在现实生活中运行,但是如果我从选择列表中删除“#TempTable.Id”,它会在一秒钟内运行。

有没有人知道为什么包含#temp表中的值与在连接中使用它相比会产生如此巨大的成本呢?

1 个答案:

答案 0 :(得分:-1)

最有可能:

  • 数据类型不匹配
    例如nvarchar vs int

  • MainTable.RootVal上缺少索引
    为什么Id为PK,然后在另一列上加入?