TEXT
et VarChar(MAX)
sont des types de données de caractères à longueur variable non Unicode de grande taille, qui peuvent stocker au maximum 2147483647 caractères non Unicode (c'est-à-dire que la capacité de stockage maximale est de 2 Go).
Selon le lien MSDN, Microsoft suggère d'éviter d'utiliser le type de données Text et il sera supprimé dans les futures versions de Sql Server. Varchar (Max) est le type de données suggéré pour stocker les grandes valeurs de chaîne au lieu du type de données Text.
- Stockage en ligne ou hors ligne
Les données d'une Text
colonne de type sont stockées hors ligne dans des pages de données LOB distinctes. La ligne de la page de données de table n'aura qu'un pointeur de 16 octets vers la page de données LOB où les données réelles sont présentes. Alors que les données d'une Varchar(max)
colonne de type sont stockées en ligne si elles sont inférieures ou égales à 8000 octets. Si la valeur de la colonne Varchar (max) dépasse les 8000 octets, la valeur de la colonne Varchar (max) est stockée dans des pages de données LOB distinctes et la ligne n'aura qu'un pointeur de 16 octets vers la page de données LOB où les données réelles sont présentes. Donc In-Row
Varchar (Max) est bon pour les recherches et la récupération.
- Fonctionnalités prises en charge / non prises en charge
Certaines des fonctions de chaîne, des opérateurs ou des constructions qui ne fonctionnent pas sur la colonne de type Texte, mais elles fonctionnent sur la colonne de type VarChar (Max).
=
Égal à l'opérateur sur la colonne de type VarChar (Max)
Clause Group by sur la colonne de type VarChar (Max)
- Considérations d'E / S système
Comme nous savons que les valeurs de la colonne de type VarChar (Max) sont stockées hors ligne uniquement si la longueur de la valeur à y stocker est supérieure à 8 000 octets ou s'il n'y a pas assez d'espace dans la ligne, sinon elle stockera il en ligne. Ainsi, si la plupart des valeurs stockées dans la colonne VarChar (Max) sont volumineuses et stockées hors ligne, le comportement de récupération des données sera presque similaire à celui de la colonne Type de texte.
Mais si la plupart des valeurs stockées dans les colonnes de type VarChar (Max) sont suffisamment petites pour être stockées en ligne. La récupération des données dans lesquelles les colonnes LOB ne sont pas incluses nécessite plus de pages de données à lire, car la valeur de la colonne LOB est stockée en ligne dans la même page de données où les valeurs des colonnes non LOB sont stockées. Mais si la requête de sélection inclut une colonne LOB, elle nécessite moins de pages à lire pour la récupération des données par rapport aux colonnes de type texte.
Conclusion
Utilisez VarChar(MAX)
le type de données plutôt que TEXT
pour de bonnes performances.
La source