2010-10-16 6 views
2

Lors de la création d'une fonction définie par l'utilisateur, est-il "mauvais" d'utiliser automatiquement la plus grande chaîne possible? Par exemple, étant donné l'UDF suivant, j'ai utilisé nvarchar(max) pour ma chaîne d'entrée, où je sais parfaitement bien que la fonction actuelle ne va pas avoir besoin d'accepter nvarchar(max) et peut-être que je suis juste en avant trop de réflexion , mais je supposais qu'il y aurait toujours la possibilité qu'un nvarchar(max) soit passé à cette fonction. En faisant quelque chose de «mauvais», je me demande si en déclarant que cette fonction pourrait éventuellement recevoir et nvarchar(max) je fais quoi que ce soit pour potentiellement paralyser les performances? NVARCHAR (MAX) affectera les performances s'il s'agit d'une colonne de base de données.Devrais-je utiliser le type de données chaîne le plus grand lors de la création d'une fonction définie par l'utilisateur qui fonctionne sur des chaînes?

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 

Répondre

1

En tant que paramètre d'une procédure stockée, cela ne devrait pas faire de différence. S'il y a une dégradation des performances, c'est à cause de la taille des données et non du type de données.