1
对于SQL Server中的表值函数,当执行如下所示的操作时,它只会创建临时表@Table
,就像变量(在标量值函数中)一样,是正确的吗?如果要执行许多此类陈述,是否会出现任何问题?SQL Server中的表值函数;函数中的表是暂时的?
CREATE FUNCTION some_function
(@some_var varchar(20), @someDate date)
RETURNS @Table Table (id int, name varchar(50), DoB date)
AS
BEGIN
INSERT INTO @Table
SELECT id, Name, CAST(DoB as date)
FROM tblEmployees
RETURN
END
这不是临时表,它只是一个变量。在这个例子中,你甚至不需要它。您可以创建一个内联函数并直接返回结果。这将允许优化器创建一个更好的计划*并*保存将数据复制到变量中,然后再返回它 –
请在DBA.SE上阅读此答案... http://dba.stackexchange.com/questions/16385/什么是差异之间的临时表和表中的变量在SQL服务器 – TheGameiswar
看看这里https://blogs.msdn.microsoft.com/naga/2015/05/10/sql -server-performance-tuning-table-variable-vs-temporary-tables/ –