Ant*_*ram 2 sql-server stored-procedures table-variable
我现在正在看sprocs似乎遵循下面演示的行为
DECLARE @tablevar TABLE
(
FIELD1 int,
FIELD2 int,
FIELD3 varchar(50),
-- etc
)
INSERT INTO @tablevar
(
FIELD1,
FIELD2,
FIELD3,
-- etc
)
SELECT FIELD1, FIELD2, FIELD3, -- etc
FROM
TableA Inner Join TableB on TableA.Foo = TableB.Foo
Inner Join TableC on TableB.Bar = TableC.Bar
-- Where, Order By, etc.
Select FIELD1, FIELD2, FIELD3, -- etc
FROM @tablevar
Run Code Online (Sandbox Code Playgroud)
使用这种方法有什么好处,而不是使用普通的select语句并跳过表变量?
如果你打算完全按照发布的方式使用它(填充它然后选择结果),你就没有获得任何东西.您只是在为SQL Server负责,需要更多的CPU和内存使用.
如果您计划对表变量执行更多操作,答案会更改,具体取决于您如何使用它.如果它将保存少量数据,则在后续语句中使用它可能更有效.如果您打算多次使用它并且初始数量很大,那么它可能会更有效率.
我一直在说,因为每种情况都不同,你需要进行测试才能看出它是否有所作为.