我发现以下语句之间的行为截然不同。最底层的问题通过优化程序解决了我的问题,但是,我认为它们会产生相同的行为,因为UDF已内联到执行语句中。
在选择功能上的提示。
SELECT F1 FROM dbo.FunctionReturnsATable(P1,P2...) OPTION(RECOMPILE)
提示选择函数的结果集。(解决了我的问题)
CREATE FUNCTION FunctionReturnsATable(P1,P2...)
AS BEGIN
...
INSERT @Result SELECT F1,F2... FROM (<Outer CTE of many Inner CTE's>)AS X OPTION(RECOMPILE)
RETURN
END