相关疑难解决方法(0)

多语句 TVF 与内联 TVF 性能

比较关于回文问题的一些答案(仅限 10k+ 用户,因为我删除了答案),我得到了令人困惑的结果。

我提出了一个多语句、模式绑定的 TVF,我认为它比运行标准函数要快。我还认为多语句 TVF 会被“内联”,尽管我在这方面是错误的,如下所示。这个问题是关于这两种TVF风格的性能差异。首先,您需要查看代码。

这是多语句 TVF:

IF OBJECT_ID('dbo.IsPalindrome') IS NOT NULL
DROP FUNCTION dbo.IsPalindrome;
GO
CREATE FUNCTION dbo.IsPalindrome
(
    @Word NVARCHAR(500)
) 
RETURNS @t TABLE
(
    IsPalindrome BIT NOT NULL
)
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @IsPalindrome BIT;
    DECLARE @LeftChunk NVARCHAR(250);
    DECLARE @RightChunk NVARCHAR(250);
    DECLARE @StrLen INT;
    DECLARE @Pos INT;
    SET @RightChunk = '';
    SET @IsPalindrome = 0;
    SET @StrLen = LEN(@Word) / 2;
    IF @StrLen % 2 = 1 SET @StrLen = …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 set-returning-functions

18
推荐指数
1
解决办法
923
查看次数