97 votes

Taille de la table et de l'index dans SQL Server

Pouvons-nous avoir une requête SQL qui aidera fondamentalement à visualiser les tailles de table et d’index dans SQl Server.

Comment le serveur SQL maintient-il l'utilisation de la mémoire pour les tables / index?

123voto

Rob Garrison Points 2977

sp_spaceused vous donne la taille de tous les index combinés.

Si vous voulez la taille de chaque index pour une table, utilisez l'une des deux requêtes suivantes:

 SELECT
    i.name                  AS IndexName,
    SUM(s.used_page_count) * 8   AS IndexSizeKB
FROM sys.dm_db_partition_stats  AS s 
JOIN sys.indexes                AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
WHERE s.[object_id] = object_id('dbo.TableName')
GROUP BY i.name
ORDER BY i.name

SELECT
    i.name              AS IndexName,
    SUM(page_count * 8) AS IndexSizeKB
FROM sys.dm_db_index_physical_stats(
    db_id(), object_id('dbo.TableName'), NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
GROUP BY i.name
ORDER BY i.name
 

Les résultats sont généralement légèrement différents mais inférieurs à 1%.

78voto

devio Points 22981

Le paramètre exec sp_spaceused sans paramètre affiche le résumé de la base de données entière. La solution foreachtable génère un jeu de résultats par table - ce que SSMS ne pourra peut-être pas gérer si vous avez trop de tables.

J'ai créé un script qui collecte les informations de la table via sp_spaceused et affiche un résumé dans un seul jeu d'enregistrements, trié par taille.

13voto

Ben R Points 353
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"

3voto

Zachary Burt Points 1252

Vous pouvez également trouver la procédure stockée sp_helpdb utile

0voto

Il y a une procédure stockée étendue sp_spaceused qui obtient cette information. C'est assez alambiqué pour le faire à partir du dictionnaire de données, mais Ce lien de fans à un script qui le fait. Cette stackoverflow question a une fan-out de l'information sur la sous-jacentes des structures de données que vous pouvez utiliser pour établir des estimations de table et d'index tailles pour capcity de planification.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X