Должен ли я использовать самый большой тип данных строки при создании пользовательской функции, которая работает со строками? - PullRequest
2 голосов
/ 16 октября 2010

При создании пользовательской функции «плохо» просто автоматически использовать максимально возможную строку?

Например, учитывая следующий UDF, я использовал nvarchar(max) для моей входной строки, гдеЯ прекрасно знаю, что функция в настоящее время не должна принимать nvarchar(max), и, возможно, я просто слишком много думаю, но я предполагал, что всегда будет возможность, что, возможно, nvarchar(max) будет переданоэта функция.

Делая что-то «плохое», я удивляюсь, что, объявив, что эта функция может получать и действительно nvarchar(max), делаю ли я что-нибудь для снижения производительности?

CREATE FUNCTION [dbo].[IsMasNull] (@value nvarchar(max)) 
RETURNS BIT
AS
BEGIN
    RETURN 
        CASE 
            WHEN @value IS NULL THEN 1
            WHEN CHARINDEX(char(0), @value) > 0 THEN 1
            ELSE 0
        END
END

1 Ответ

1 голос
/ 16 октября 2010

NVARCHAR (MAX) повлияет на производительность, если это столбец базы данных. В качестве параметра хранимой процедуры это не должно иметь никакого значения. Если производительность вообще ухудшается, это объясняется большим размером данных, а не типом данных.

...