我有一个存储过程,它使用临时表在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表中的值与在连接中使用它相比会产生如此巨大的成本呢?
答案 0 :(得分:-1)
最有可能:
数据类型不匹配
例如nvarchar vs int
MainTable.RootVal上缺少索引
为什么Id
为PK,然后在另一列上加入?