2016-05-27 2 views
0

Je suis analyste de rapports et "novice" pour SQL Server. J'ai une vue joignant 2 tables avec 100 colonnes - 50 sont NVARCHAR(255) Null par défaut, tous les autres sont int ou float.Performances des colonnes de la table grand SQL Server 2012

La table peut aller jusqu'à 1 million de lignes et les performances sont horribles lors de l'extraction des données à l'aide de SQL Server, prend une heure et manque de mémoire. La plupart de mes NVARCHAR(255) sont actuellement limitées à 10 & 50 octets dans la table d'origine, donc 255 n'est pas nécessaire. En excluant les problèmes de jointure SQL, y a-t-il des avantages en termes de performances pour réduire la taille des colonnes des 50 à leurs véritables limites?

J'ai vu des données variables dans le forum à ce sujet: certains articles indiquent que j'obtiendrais un gain de performance en termes de taille de page en réduisant cela pour que les données soient "IN-ROW". Inversement, j'ai lu où le NVARCHAR(255) extrait seulement la taille réelle des données de 10 ou 50 cela ne peut pas causer de problème de performance.

Aidez s'il vous plaît?

Merci à tous!

Rebelle

+0

Bienvenue sur SO! Sans rapport, mais une suggestion: cela ressemble à un * lot * de données à inclure dans si peu de tables - pensez à regarder [normalisation de la base de données] (https://en.wikipedia.org/wiki/Database_normalization) si/quand vous avez temps – Conduit

Répondre

0

Sur la base de ce que j'ai pu trouver en regardant autour de Stackoverflow je vous recommande de régler le NVARCHAR à un nombre plus raisonnable tout en tenant compte des besoins futurs.

Le lien ci-dessous va dans beaucoup de détails sur le sujet. Je résumerais comme ceci ... Certaines parties de SQL utilisent la taille maximale possible pour déterminer la mémoire nécessaire.

is-there-an-advantage-to-varchar500-over-varchar8000