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

Pourquoi ne pas utiliser varchar(max) ?

Ma réponse à cela ne concerne pas l'utilisation de Max, mais plutôt la raison de VARCHAR (max) vs TEXT.

Dans mon livre; tout d'abord, à moins que vous ne puissiez être absolument certain que vous n'encoderez jamais que du texte en anglais et que les gens ne feront pas référence à des noms de lieux étrangers, vous devez alors utiliser NVARCHAR ou NTEXT.

Deuxièmement, c'est ce que les champs vous permettent de faire.

TEXT est difficile à mettre à jour par rapport à VARCHAR, mais vous bénéficiez de l'indexation de texte intégral et de nombreuses choses intelligentes.

D'autre part, VARCHAR(MAX) a une certaine ambiguïté, si la taille de la cellule est <8000 caractères, elle sera traitée comme des données de ligne. S'il est supérieur, il sera traité comme un LOB à des fins de stockage. Comme vous ne pouvez pas le savoir sans interroger RBAR, cela peut avoir des stratégies d'optimisation pour les endroits où vous devez être sûr de vos données et du nombre de lectures qu'elles coûtent.

Sinon, si votre utilisation est relativement banale et que vous ne vous attendez pas à avoir des problèmes avec la taille des données (c'est-à-dire que vous utilisez .Net et que vous n'avez donc pas à vous soucier de la taille de vos objets string/char*) alors utiliser VARCHAR(max) est bien.