De nombreux endroits ignorent souvent le moteur de stockage lors de l'analyse des principes de sélection des types de données char et varchar. En fait, nous devons déterminer comment choisir le type de données approprié en fonction du moteur de stockage sélectionné.
值 | char(3) | 实际存储字符长度 | varchar(3) | 实际存储字符长度 |
---|---|---|---|---|
” | ’ ‘ | 3 | ” | 1 |
‘ab’ | ‘ab ‘ | 3 | ‘ab’ | 3 |
‘abc’ | ‘abc’ | 3 | ‘abc’ | 4 |
‘abcdefg’ | ‘abc’ | 3 | ‘abc’ | 4 |
Résumé : Comme le montre le tableau ci-dessus, char est de longueur fixe.
Char est un type de longueur fixe, varchar est un type de longueur non fixe et varchar est un type de longueur variable. Quelqu'un peut se demander pourquoi la longueur de varchar est plus grande que la longueur des données ? Parce que VARCHAR est enregistré avec des données de préfixe d'un ou deux octets de long. Si la longueur déclarée de la colonne VARCHAR est supérieure à 255, le préfixe de longueur est de deux octets, sinon il est d'un octet.
Table de données MyISAM, il est préférable d'utiliser des colonnes de données de longueur fixe au lieu de colonnes de données de longueur variable.
Il est recommandé d'utiliser le type VARCHAR.
Pour les tables de données InnoDB, le format de stockage de lignes interne ne fait pas de distinction entre les colonnes de longueur fixe et de longueur variable (toutes les lignes de données utilisent des pointeurs d'en-tête pointant vers les valeurs des colonnes de données), donc en substance, utiliser des colonnes CHAR de longueur fixe est pas nécessairement plus simple que d'utiliser des colonnes VARCHAR de longueur variable. Par conséquent, le principal facteur de performances est la quantité totale de stockage utilisée par les lignes de données. Étant donné que CHAR occupe en moyenne plus d'espace que VARCHAR, il est préférable d'utiliser VARCHAR pour minimiser le stockage total et les E/S disque des lignes de données qui doivent être traitées.
Les tables de données MEMORY utilisent actuellement le stockage de lignes de données de longueur fixe, donc peu importe que vous utilisiez des colonnes CHAR ou VARCHAR. Les deux sont traités comme des types CHAR.
1. Nous savons tous que le chinois utf-8 occupe 3 octets et que gbk occupe deux octets, donc varchar(20) ne peut-il stocker que 20 caractères, c'est-à-dire qu'en est-il ? stocker 6 caractères chinois ?
Réponse : Ce n'est pas le cas (on dit en ligne que les versions antérieures à la 5.0 étaient comme ça, mais il n'y a pas de test). mysql varchar(20) peut en stocker 20 en chinois et en anglais, mais la longueur maximale du champ varchar dépend de l'encodage. S'il s'agit de utf-8, alors il s'agit d'environ 65535/3, s'il s'agit de gbk, alors il l'est. à propos de 65535/2
De nombreux endroits ignorent souvent le moteur de stockage lors de l'analyse des principes de sélection des types de données char et varchar. En fait, nous devons déterminer comment choisir le type de données approprié en fonction du moteur de stockage sélectionné.
Ce qui précède est le contenu des principes de sélection des types de données char et varchar dans MySQL Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !