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

Différence entre les différents types de chaînes dans SQL Server ?

text et ntext sont obsolètes, alors omettons-les pour un moment. Pour ce qui reste, il y a 3 dimensions :

  • Unicode (UCS-2) et non-unicode :N devant le nom indique Unicode
  • Longueur fixe ou longueur variable :var indique variable, sinon fixe
  • In-row contre BLOB :(max) car longueur désigne un BLOB, sinon est une valeur dans la ligne

Ainsi, avec ceci, vous pouvez lire la signification de n'importe quel type :

  • CHAR(10) :est une ligne non Unicode de longueur fixe de taille 10
  • NVARCHAR(256) :est un Unicode de longueur variable dans la ligne d'une taille allant jusqu'à 256
  • VARCHAR(MAX) :est un BLOB de longueur variable non-Unicode

Les types obsolètes text et ntext correspondent aux nouveaux types varchar(max) et nvarchar(max) respectivement.

Lorsque vous accédez aux détails, la signification de in-row vs BLOB brouille sur de petites longueurs car le moteur peut optimisez le stockage et extrayez un BLOB en ligne ou poussez une valeur en ligne dans l'unité d'allocation "petit BLOB", mais il ne s'agit que d'un détail d'implémentation. Voir Organisation des tables et des index .

D'un point de vue programmation, tous types :CHAR , VARCHAR , NCHAR , NVARCHAR , VARCHAR(MAX) et NVARCHAR(MAX) , prend en charge une API de chaîne uniforme :Fonctions de chaîne . Les anciens types TEXT, obsolètes et NTEXT ne fais pas prennent en charge cette API, ils ont une API TEXT distincte et dépercée à manipuler. Vous ne devez pas utiliser les types obsolètes.

Les types BLOB prennent en charge les mises à jour efficaces sur place en utilisant la UPDATE table SET column.WRITE(@value, @offset) syntaxe.

La différence entre les types de longueur fixe et de longueur variable disparaît lors de la compression des lignes sur une table. Lorsque la compression de ligne est activée, les types de longueur fixe et de longueur variable sont stockés dans le même format et les espaces de fin ne sont pas stockés sur le disque, voir Mise en œuvre de la compression de lignes . Notez que la compression de page implique la compression de ligne.