4
当包裹在TVF中时,为什么此查询的速度大大降低?
我有一个相当复杂的查询,它仅需几秒钟即可运行,但是当包装到一个表值函数中时,它要慢得多。我实际上并没有完成它,但是它运行了十分钟而没有结束。唯一的变化是用日期参数替换了两个日期变量(用日期文字初始化): 七秒钟内运行 DECLARE @StartDate DATE = '2011-05-21' DECLARE @EndDate DATE = '2011-05-23' DECLARE @Data TABLE (...) INSERT INTO @Data(...) SELECT... SELECT * FROM @Data 至少跑十分钟 CREATE FUNCTION X (@StartDate DATE, @EndDate DATE) RETURNS TABLE AS RETURN SELECT ... SELECT * FROM X ('2011-05-21', '2011-05-23') 之前,我已经使用带有RETURNS @Data TABLE(...)子句的多语句TVF编写了该函数,但是将其替换为内联结构并没有进行明显的更改。TVF的长时间运行是实际SELECT * FROM X时间;实际上创建UDF只需几秒钟。 …