Puisque varchar prend un espace disque proportionnel à la taille du champ, y a-t-il une raison pour laquelle nous ne devrions pas toujours définir varchar comme maximum, par exemple varchar(8000)
sur SQL Server?
Sur la table de création, si je vois quelqu'un faire, varchar(100)
je devrais lui dire non, tu as tort, tu devrais faire varchar(8000)
?
sql-server
varchar
Aleksandr Levchuk
la source
la source
Réponses:
Résumé: ne le faites pas.
la source
En supposant que vous faites référence à SQL Server, je peux en penser un.
Il y a une limite à la taille (8 Ko) d'une ligne dans une table et SQL vous permet de définir des champs varchar qui pourraient théoriquement dépasser cette limite. Ainsi, l'utilisateur pourrait obtenir des erreurs s'il mettait trop de données dans le champ lié à cela.
À partir de SQL 2K8, vous pouvez dépasser cette limite, mais il y a des implications en termes de performances .
De plus, il y a toute la vérification du caractère raisonnable de limiter la taille à ce que vous attendez des données. Si vous voulez un champ de longueur illimité, pourquoi ne pas utiliser du texte ou du texte?
la source
Cela dépend sûrement des informations stockées sur le terrain?
Certaines choses vont avoir une longueur maximale pour un certain nombre de raisons et s'il doit y avoir une longueur maximale, cela devrait être la longueur de votre champ.
S'il n'y a théoriquement pas de longueur maximale, je me demanderais pourquoi varchar serait utilisé.
la source
Dans le contexte des bases de données Oracle, j'ai appris que toujours utiliser la plus petite taille de champ pour les colonnes de base de données a un piège.
Lorsque vous déplacez des données via l'importation / exportation d'une base de données avec un classement à un octet vers une base avec un classement à plusieurs octets (comme Oracle XE), la longueur en octets peut augmenter et l'importation des données dans les tables créées par l'importation échoue. Bien sûr, Oracle a la possibilité de définir la longueur de varchar2 sous forme de caractère ou d'octet.
Mon point ici, c'est qu'il n'est pas toujours sage de définir un champ avec toujours le plus petit possible. J'ai vu beaucoup de tables de modification pour augmenter le champ avec plus tard (en raison de modifications des exigences).
Avoir un champ inutilisé de 20% à 100% avec est une option discutable ici.
la source