Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

sql varchar(max) vs varchar(fix)

MSDN

  • Utilisez varchar lorsque les tailles des entrées de données de colonne varient considérablement.
  • Utilisez varchar(max) lorsque la taille des entrées de données de colonne varie considérablement et que la taille peut dépasser 8 000 octets.

Lorsque la longueur est spécifiée dans la déclaration d'un VARCHAR variable ou colonne, la longueur maximale autorisée est 8000 . Si la longueur est supérieure à 8000 , vous devez utiliser le MAX spécificateur comme longueur. Si une longueur supérieure à 8000 est spécifié, l'erreur suivante sera rencontrée (en supposant que la longueur spécifiée est 10000 ):

MISE À JOUR :-J'ai trouvé un lien que j'aimerais partager :-

ici

Il n'y a pas beaucoup de différence de performances entre Varchar[(n)] et Varchar(Max) . Varchar[(n)] fournit de meilleurs résultats de performance par rapport à Varchar(Max) . Si nous savons que les données à stocker dans la colonne ou la variable sont inférieures ou égales à 8 000 caractères, l'utilisation de ce type de données Varchar[(n)] offre de meilleures performances par rapport à Varchar(Max).Exemple :lorsque j'ai exécuté ce qui suit script en changeant la variable @FirstName tapez Varchar(Max) alors pour 1 million d'affectations, cela prend systématiquement le double de temps que lorsque nous avons utilisé le type de données comme

Varchar(50) for variable @ FirstName.
DECLARE @FirstName VARCHAR(50), @COUNT INT=0, @StartTime DATETIME = GETDATE()
WHILE(@COUNT < 1000000)
BEGIN
SELECT @FirstName = 'Suraj', @COUNT = @COUNT +1
END
SELECT DATEDIFF(ms,@StartTime,GETDATE()) 'Time Taken in ms'
GO