Il y a un débat sur le travail de ma femme sur l'utilisation de varchar(255)
pour tous les champs varchar
dans des tableaux temporaires dans des procédures stockées. Fondamentalement, un camp veut utiliser 255 car il fonctionnera toujours même si la définition change et que l'autre camp veut coller avec la taille dans les tables source des améliorations potentielles.
Le camp de performance est-il juste? Y a-t-il d'autres implications? Ils utilisent SQL Server.
Selon la manière dont vous utilisez vos tables TEMP, vous pouvez rencontrer un problème de troncature de données.
Cet exemple est un peu réveillé, mais il illustre mon point. Exemple:
La table TEMP accepterait volontiers la nouvelle valeur de Varchar avec une longueur de 59. Cependant, votre table utilisateur ne pouvait pas. En fonction de la façon dont vous gérez cela dans votre procédure, cela pourrait entraîner une troncature ou une erreur.
À moins que vous ne documensiez et ne tiendez pas compte de ces problèmes, votre procédure pourrait fonctionner de manière inattendue.
Personnellement, je ne pense pas qu'il y ait une réponse à cette question qui est correcte à 100% du temps. Cela dépend vraiment de la manière dont vous utilisez ces tables temporaires.
J'espère que cela t'aides
utilisation
varchar(255)
Pour tous les champsvarchar
dans des tableaux temporaires dans des procédures stockées.
Je me pencherais vers l'utilisation de la longueur du champ actuel.
J'ai lu récemment que MySQL (je suppose que SQL Server est similaire) Tableaux TEMP attribue suffisamment de mémoire pour stocker la longueur maximale possible pour chaque colonne varchar
... une approche systématique de l'allocation de 200% à 500% de la La mémoire requise pour varchar
champs dans toutes les procédures stockées semble être un tirage inutile sur les ressources système. Si vous utilisez déjà une quantité importante de mémoire créant ces tables temporaires, vous pouvez prétendre inutilement la mémoire utilisée pour la mise en cache, créant davantage de travaux pour le serveur à un moment donné, même après la fin des procédures de magasin.
Edit: Voir la réponse de Bill Karwin: https://stackoverflow.com/questions/1962310/importance-of-varchachar-lengthin-in -MySQL-Table