12
votes

Performance entre Varchar (1) VS Char (1)

Y a-t-il une différence de performance entre varchar (1) et char (1) ? Quels RDBMS gérent ces deux types de données et tailles de différentes manières?


0 commentaires

6 Réponses :


0
votes

Cela ne compte guère, puisque vous utilisez 1 octet dans les deux cas.

Mais longue histoire courte, Varchar est la taille variable et la taille est une taille fixe. En grandes quantités, cela peut faire la différence dans l'espace de stockage et affecter le temps de calcul.

performance sage, utilisez Char si les données vont être une longueur fixe. Si vous êtes flexible avec une longueur variable de vos données, utilisez Varchar.


1 commentaires

*** PAS 1 octet dans les deux cas! *** - Par exemple - MySQL V5.0 Docs Dites à Varchark Exigences de stockage pour Varcharchar (M) exige 'L + 1 octets si les valeurs de colonne requièrent 0 - 255 octets' (où L représente la longueur réelle en octets d'une valeur de chaîne donnée ). Donc, vous utiliseriez 1 octet pour le char (1) et 2 octets pour Varchar (1). Dans ce cas, vous utilisez 100% plus d'espace de stockage pour cette colonne. Cela peut être ou non une grosse affaire en fonction de la situation d'utilisation. La peine d'indiquer la différence si elle est pertinente. (Voir dev.mysql.com/doc/refman/5.0/ FR / Configuration de stockage.html )



1
votes

En ce qui concerne Oracle concerné ...

Char (2) utilisera toujours deux octets / caractères de stockage. Varchar2 (2) ne peut en utiliser qu'un seul. Donc, le cas général est d'utiliser Varchar2 au lieu de Char.

En pratique, vous ne devriez pas voir une performance de différence sage pour une colonne d'une personnalité.

Étant donné qu'il n'y a jamais de bénéfice de Char, j'utilise toujours Varchar2.


1 commentaires

Le Varchar doit toujours stocker au moins un octet pour la longueur de la chaîne, cependant, vous ne pouvez jamais avoir moins de 1 octet.



7
votes

La différence sera négligeable dans la plupart des cas. Concentrez-vous sur vos efforts de conception orientés sur la performance dans des endroits où il fera une réelle différence, comme la composition de table et la conception de l'index.

Il aide à diviser l'effort de conception en deux couches: conception logique et conception physique.
La plupart des efforts axés sur la performance sont dans la deuxième étape, la conception physique.

Dans la conception logique, la flexibilité atout la performance. Sauf quand ça ne va pas.


2 commentaires

La flexibilité devrait presque jamais tromb les performances! Je vous garantis que l'utilisateur souhaite des performances sur la flexibilité même lorsqu'ils disent qu'ils veulent une flexibilité.


Peut-être pas: nikoport.com/2012/09/05/...



0
votes

Ma compréhension Après avoir lu la description de MySQL de Varcharne et de Char est que si vous êtes des données aurez toujours la même longueur, alors que vous pouvez potentiellement vous enregistrer un seul octet de données car Varcharre nécessite le stockage d'un octet séparé de les données réelles afin d'enregistrer la durée des données. Cependant, si vous êtes des données n'est pas une longueur constante et que vous envisagez de considérations spatiales, il serait logique d'utiliser Varchar, car cela utilisera toujours un octet pour chaque bit de la longueur déclarée s'il y a quelque chose dans cet espace .

À la fin, cependant, cela n'apporte probablement pas cette grosse différence car la quantité de données impliquée est assez petite.

Voici où j'ai eu mes informations: http: //dev.mysql .COM / DOC / REFMAN / 5.0 / FR / CHAR.HTML Si vous suivez le lien, faites une attention particulière à la petite carte car elle donne des exemples de la manière dont les données seraient traitées avec Varchar Vs. Char.


0 commentaires

12
votes

dans MS SQL Varcharchar (1) Utilise trois octets de stockage et Char (1) Utilise une octet de stockage.

char (1) est plus efficace que varchar (1) dans le traitement et le stockage.

Le breakgen point sur varchar serait plus de plus de 3 caractères si l'utilisation de données de longueur variable.

Si vous utilisez une longueur fixe, alors Char est toujours plus efficace par deux octets.

ref: http://msdn.microsoft.com/en-gb /Library/ms176089.aspx


0 commentaires

2
votes

pour oracle

Le Varchar2 (1) et le char (1) sont identiques dans tous les aspects. Il n'y a pas raison convaincante d'utiliser le type de caractère dans ce cas et d'éviter tout confusion, je viens de dire non, "même pour le champ Char (1).

Référence: https: //asktom.oracle.com/pls/asktom/f?p=100:11:0::::111_Question_id:26683919003468444476


1 commentaires

N'est pas vrai pour les conducteurs. Les pilotes Oracle .NET diffèrent les deux.