J'utilise ce script SQL (que j'ai obtenu de quelqu'un, quelque part - je ne peux pas reconstruire de qui il vient) depuis des lustres et cela m'a beaucoup aidé à comprendre et à déterminer la taille des index et des tables:
SELECT
t.name AS TableName,
i.name as indexName,
sum(p.rows) as RowCounts,
sum(a.total_pages) as TotalPages,
sum(a.used_pages) as UsedPages,
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,
(sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,
(sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.object_id = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.name NOT LIKE 'dt%' AND
i.object_id > 255 AND
i.index_id <= 1
GROUP BY
t.name, i.object_id, i.index_id, i.name
ORDER BY
object_name(i.object_id)
Bien sûr, vous pouvez utiliser un autre critère de commande, par exemple
ORDER BY SUM(p.rows) DESC
pour obtenir les tables avec le plus de lignes, ou
ORDER BY SUM(a.total_pages) DESC
pour obtenir les tables avec le plus de pages (blocs de 8K) utilisées.
SELECT OBJECT_SCHEMA_NAME(i.object_id) + '.' + OBJECT_NAME(i.object_id) AS TableName, ...
Dans SQL Server 2008, vous pouvez également simplement exécuter le rapport standard Utilisation du disque par les principales tables. Vous pouvez le trouver en cliquant avec le bouton droit sur la base de données, en sélectionnant Rapports-> Rapports standard et en sélectionnant le rapport souhaité.
la source
Cette requête aide à trouver la plus grande table dans votre connexion.
la source
Vous pouvez également utiliser le code suivant:
la source
Si vous utilisez Sql Server Management Studio 2008, vous pouvez afficher certains champs de données dans la fenêtre de détails de l'explorateur d'objets. Recherchez et sélectionnez simplement le dossier des tables. Dans la vue détaillée, vous pouvez cliquer avec le bouton droit sur les titres des colonnes et ajouter des champs au «rapport». Votre kilométrage peut varier si vous utilisez SSMS 2008 express.
la source
J'ai trouvé cette requête également très utile dans SqlServerCentral, voici le lien vers l'article original
Tables les plus volumineuses du serveur SQL
Dans ma base de données, ils ont donné des résultats différents entre cette requête et la première réponse.
J'espère que quelqu'un trouvera utile
la source
La réponse de @ marc_s est très bonne et je l'utilise depuis quelques années. Cependant, j'ai remarqué que le script manque des données dans certains index columnstore et ne montre pas une image complète. Par exemple, lorsque vous
SUM(TotalSpace)
comparez le script avec la propriété de base de données d'espace total dans Management Studio, les nombres ne correspondent pas dans mon cas (Management Studio affiche des nombres plus grands). J'ai modifié le script pour résoudre ce problème et l'ai étendu un peu:J'espère que cela sera utile pour quelqu'un. Ce script a été testé sur de grandes bases de données à l'échelle du TB avec des centaines de tables, d'index et de schémas différents.
la source