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

Est-il plus efficace de séparer les grandes et les petites données liées dans la colonne d'une table SQL ?

VARCHAR est stocké en ligne avec la table. VARCHAR est plus rapide lorsque la taille est raisonnable, dont le compromis serait plus rapide dépend de vos données et de votre matériel, vous voudriez comparer un scénario réel avec vos données.

Le nombre maximum effectif d'octets pouvant être stockés dans un VARCHAR ou VARBINARY la colonne est soumise à la taille de ligne maximale de 65,535 bytes , qui est partagé entre toutes les colonnes.

Par exemple, un VARCHAR(255) colonne peut contenir une chaîne d'une longueur maximale de 255 caractères. En supposant que la colonne utilise le jeu de caractères latin1 (un octet par caractère), le stockage réel requis est la longueur de la chaîne (L), plus un octet pour enregistrer la longueur de la chaîne. Pour la chaîne 'abcd' , L est 4 et l'exigence de stockage est de cinq octets. Si la même colonne est déclarée à la place pour utiliser le ucs2 jeu de caractères à deux octets, l'exigence de stockage est de 10 octets :la longueur de 'abcd' est de huit octets et la colonne nécessite deux octets pour stocker les longueurs car la longueur maximale est supérieure à 255 (jusqu'à 510 bytes ).

Pour des données plus volumineuses, pensez à utiliser TEXT ou BLOB . TEXT et BLOB les colonnes sont implémentées différemment dans le NDB moteur de stockage, dans lequel chaque ligne d'un TEXT colonne est composée de deux parties distinctes. L'un d'eux est de taille fixe (256 bytes) , et est en fait stocké dans la table d'origine. L'autre se compose de toutes les données dépassant 256 bytes , qui est stocké dans une table masquée. Les lignes de cette seconde table sont toujours 2,000 bytes long. Cela signifie que la taille d'un TEXT la colonne est 256 si size <= 256 (où taille représente la taille de la ligne) ; sinon, la taille est 256 + size + (2000 – (size – 256) % 2000) .

http://dev.mysql.com/doc/refman /5.6/fr/exigences-de-stockage.html

Dépend de votre relation de base de données, si vous utilisez rarement ces champs dans la requête. Par exemple pour des informations supplémentaires. Créer un tableau séparé est une bonne option (normaliser).

REMARQUES : VARCHAR est différent avec CHAR . Si vous créez VARCHAR(250) et insérez juste 20 caractères dessus, il faudra alors 5 bytes + L différent avec CHAR(250) , cela prendra 250 bytes + L pour le même état.