4 Réponses :


2
votes

Voici un article de blog qui explique dans quelles circonstances et pourquoi il existe des différences de performance lors de l'utilisation de différentes tailles de colonne (avec des tests et des détails techniques):

Tuning TSQL avancé: Pourquoi les internales connaissances compte


3 commentaires

Pas cela pertinent pour la question posée ici. Il ne regarde pas varchar (x) vs varchar (y) du tout mais compare varchar (max) , texte < / Code> et Char (399) Quels types de données différents sont tous stockés de différentes manières. C'est plus pertinent sur la raison pour laquelle vous ne devriez pas dépasser varchar largeur imo et La vidéo de la mémoire de la mémoire de Adam Machanic est également pertinente


+1 @martin excellent liens. Merci d'avoir partagé


Voici le lien mentionné web.archive.org/web/20180424213540/sqlblog.com/blogs/paul_wh ite / ...



1
votes

taille de taille

Utilisez toujours la taille de données la plus petite qui accueillera le plus grand Valeur possible. Si une colonne va stocker des valeurs entre 1 et 5, Utilisez Tinyint au lieu d'int.

Cette règle s'applique également aux colonnes de caractères. Plus les données sont petites Taille, moins il faut lire, donc performance, sur tous les avantages. De plus, la taille réduit réduit le trafic réseau. Avec plus récent technologie, cette pointe semble moins pertinente, mais ne le rejette pas de main. Vous ne regretterez pas d'être efficace de la gove.

Pour plus d'informations, visitez http://www.techrepublic.com/blog/10-things/10-plus-tips-for-geting-thebest-performance-out-of -Votre-SQL-Server-Types de données /


1 commentaires

Une colonne VARCHAR (200) contenant une chaîne de caractères de 10 caractères n'utilisera plus de trafic réseau que la colonne VARCHAR (20) contenant les mêmes données.



2
votes

Cela compte pour l'optimiseur de la requête lorsqu'il évaluera le meilleur chemin de requête pour effectuer votre requête. Lorsque plusieurs chemins seront disponibles, il calculera un coût d'E / S et d'autres paramètres différents basés sur votre requête et à partir de ceux-ci, choisissez celui qui lui apparaît comme le moins coûteux.

Ce n'est pas un calcul absolu, ce n'est qu'un processus d'approximation. Par conséquent, il peut facilement être jeté si la taille moyenne apparente requise pour manipuler les enregistrements d'une table en mémoire est beaucoup plus grande que ce qui sera vraiment nécessaire et l'optimisateur pourrait choisir un chemin moins performant en fonction de ce qu'elle pense être nécessaire pour les autres chemins.

Avoir une taille maximale réaliste est également utile à tout autre programmeur qui viendra regarder votre code. Si j'ai une variable que je souhaite afficher dans une interface graphique, je pourrais allouer beaucoup plus d'espace que nécessaire, si je vois qui est soutenu par quelque chose comme Nvarchars (200) ou Nvarchars (2000) au lieu de Nvarchars (20) si sa taille est jamais plus grand que ça.


0 commentaires

13
votes

Oui, la longueur de Varchare affecte l'estimation de la requête, la mémoire qui sera attribuée à un fonctionnement interne (par exemple pour le tri) et comme des ressources en conséquence de la CPU. Vous pouvez le reproduire avec l'exemple simple suivant.

1.Créate de deux tables: p> xxx pré>

2. Remplissez les deux avec quelques données: p> xxx pré>

3. Exécutez les requêtes suivantes avec «Inclure le plan d'exécution réelle»: P>

select a from varLenTest1 order by a OPTION (MAXDOP 1) ;
select a from varLenTest2 order by a OPTION (MAXDOP 1) ;


0 commentaires