Sql server SQL Server-在函数中缓存本地数据
假设我有这个:Sql server SQL Server-在函数中缓存本地数据,sql-server,performance,tsql,database-administration,Sql Server,Performance,Tsql,Database Administration,假设我有这个: SELECT x, y, z FROM t1 WHERE fn_ExpensiveLookup(x); 让我们假设fn_ExpensiveLookup执行了大量昂贵的操作(其中一些操作可能仅在查询/连接期间被缓存) 我不能在标量值函数中使用临时表,我相信表变量在函数调用之间不会持久存在 那么,如何在函数中缓存一些内容呢?是否可以将UDF重新写入参数化视图,如下所示: 基本上没有一个开始。。。结束。将select中的所有内容写入return语句中 结果将被重用(假设没有参数是浮
SELECT x, y, z
FROM t1
WHERE fn_ExpensiveLookup(x);
让我们假设fn_ExpensiveLookup
执行了大量昂贵的操作(其中一些操作可能仅在查询/连接期间被缓存)
我不能在标量值函数中使用临时表,我相信表变量在函数调用之间不会持久存在
那么,如何在函数中缓存一些内容呢?是否可以将UDF重新写入参数化视图,如下所示: 基本上没有一个开始。。。结束。将select中的所有内容写入return语句中 结果将被重用(假设没有参数是浮点数),查询将基于集合。还添加了SCHEMABINDING
如果这是可能的,查询的执行应该与任何其他谓词一样。能否将一些昂贵的“可缓存”逻辑移到函数之外,并将结果作为第二个参数传入?@Curt I只能更改where子句和函数。查询的其余部分无法更改。您可以使用同义词在标量值函数中使用临时表。不推荐使用这种方法,但也可以。