可以在同一个存储过程中使用临时表和表变量吗?

时间:2013-01-15 22:52:37

标签: sql sql-server sql-server-2008

我的存储过程中有一个选择返回4000 +行。我打算将它作为临时表来处理程序中的数据。

我还有其他各种选择只返回100-300行。我打算制作这些表变量,再次在后面的程序中解决。

在同一程序中使用临时表和表变量是否可以,否则会导致任何性能问题?

3 个答案:

答案 0 :(得分:5)

是的,没关系。

至于编程实践,如果我正在读取存储过程,我更喜欢一种类型或另一种类型(并倾向于表变量)。但是,您可能有充分的理由使用其中一个,例如需要临时表上的索引或将其用于select into,然后继续。

答案 1 :(得分:1)

您需要在此处查找完整的选项sommarskog.se - share_data

能够向临时表添加各种索引是我有时会选择临时表的一个特别原因。

为了避免连续命中temp db,如果不需要索引,那么我将使用表变量。

现在我经常使用许多CTE一起工作,避免使用任何类型的物化表。

经典答案 - “取决于它!”

答案 2 :(得分:0)

我认为这里有许多我们不知道的因素,例如贵公司的资源,时间限制等。

一般来说,为此目的使用临时表是很好的。和100-300行(在选择中提到) - 那是花生。不用担心。