Question

  

Possible en double:    Y at-il des inconvénients à l'aide d'un varchar générique (255) pour tous les champs de texte

Dans MYSQL vous pouvez choisir une longueur pour le type de champ VARCHAR. Les valeurs possibles sont 1-255.

Mais quels sont ses avantages si vous utilisez VARCHAR (255) qui est le maximum au lieu de VARCHAR (20)? Pour autant que je sache, la taille des entrées ne dépend que de la longueur réelle de la chaîne insérée.

taille (en octets) = longueur + 1

Donc, si vous avez le mot « Exemple » dans un champ VARCHAR (255), il aurait 8 octets. Si vous avez dans un champ VARCHAR (20), il aurait 8 octets, aussi. Quelle est la différence?

J'espère que vous pouvez me aider. Merci d'avance!

Était-ce utile?

La solution

Départ: Référence Varchar

En bref il n'y a pas beaucoup de différence, sauf si vous allez sur la taille de 255 dans votre VARCHAR qui nécessitera un autre octet pour le préfixe de longueur.

La longueur indique plus d'une contrainte sur les données stockées dans la colonne que toute autre chose. Cette limite intrinsèquement la taille maximale de stockage pour la colonne ainsi. À mon humble avis, la longueur doit donner un sens par rapport aux données. Si votre stockage d'une sécurité sociale # il n'a pas de sens pour régler la longueur à 128, même si cela ne vous coûte rien dans le stockage si tout ce que vous réellement magasin est un SSN.

Autres conseils

Il y a beaucoup de raisons valables pour le choix d'une valeur inférieure au maximum qui ne sont pas liés à la performance. Définition d'une taille permet d'indiquer le type de données que vous stockez et peut également agir aussi comme une forme de dernière hoquet de validation.

Par exemple, si vous stockez un code postal au Royaume-Uni, alors vous ne avez besoin de 8 caractères. La définition de cette limite contribue à rendre clairement le type de données que vous stockez. Si vous choisissez de 255 caractères, il serait tout simplement confondre les choses.

Je ne sais pas mySQL mais dans SQL Server, il vous permettra de définir des domaines tels que le nombre total d'octets utilisés est supérieur au nombre total d'octets qui peuvent réellement être stockés dans un dossier. C'est une mauvaise chose. Tôt ou tard, vous obtiendrez une ligne où la limite est atteinte et vous ne pouvez pas insérer les données.

Il est préférable de concevoir la structure de votre base de données pour tenir compte des limites de taille de la ligne.

En outre oui, vous ne voulez pas les gens à mettre 200 caractères dans un domaine où la valeur maximale doit être 10. Si elles le font, il est presque toujours de mauvaises données.

Vous dites, eh bien je peux limiter ce au niveau de l'application. Mais les données ne soit pas dans la base de données que d'une application. Parfois, plusieurs applications utilisent parfois les données sont importées et parfois il est fixé manuellement à partir de la fenêtre de requête (mise à jour tous les enregistrements d'ajouter 10% au prix par exemple). Si l'une de ces sources de données ne vous connaissez pas encore sur les règles que vous mettez dans votre application, les mauvaises, les données inutiles dans votre base de données. L'intégrité des données doit être appliquée au niveau de la base de données (qui ne vous empêche pas de vérifier aussi avant d'essayer d'entrer des données) ou si vous avez pas d'intégrité. De plus, il a été mon expérience que les gens qui sont trop paresseux pour concevoir leur base de données sont souvent aussi trop paresseux pour mettre effectivement les limites dans l'application et il n'y a pas de vérification de l'intégrité des données du tout.

Ils ont un mot pour les bases de données sans l'intégrité des données -. Inutile

Il y a une différence sémantiquement (et je crois que c'est la seule différence): si vous essayez de remplir 30 caractères non-espace en varchar (20), il produira une erreur, alors qu'elle réussira à varchar (255). Il est donc principalement une contrainte supplémentaire.

Eh bien, si vous voulez permettre une entrée plus grande, ou de limiter la taille d'entrée peut-être.

Par exemple, vous pouvez avoir prenom comme VARCHAR 20, mais peut-être adresse_rue comme VARCHAR 50 depuis le 20 peut ne pas être assez d'espace. En même temps, vous pouvez contrôler la taille de cette valeur peut obtenir.

En d'autres termes, vous avez défini un plafond de la taille d'une valeur particulière peut être, en théorie, pour empêcher la table (et éventuellement les entrées d'index / d'index) de trop grande.

Vous pouvez simplement utiliser CHAR qui est une largeur fixe aussi bien, mais contrairement à VARCHAR qui peuvent être plus petits, les valeurs CHAR pads (bien que cela fait pour un accès plus rapide SQL.

Du point de vue des performances de la base de données, je ne crois pas sage, il va y avoir une différence.

Cependant, je pense que beaucoup de la décision sur la durée d'utilisation se résume à ce que vous essayez d'accomplir et de documenter le système d'accepter seulement les données dont il a besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top