Aller au contenu
Accueil » Articles de conseil » Comment lister les tables d’une base de données et leurs volumes

Comment lister les tables d’une base de données et leurs volumes

Voici une requête qui retourne :

  • Nom de la table
  • Schéma
  • Nombre de lignes
  • Taille totale (données + index) en Mo
  • Taille des données seules en Mo
  • Taille des index en Mo
  • Taille non allouée en Mo
SELECT 
    s.name AS SchemaName,
    t.name AS TableName,
    p.rows AS RowCounts,
    CONVERT(DECIMAL(18,2), au.total_pages * 8 / 1024.0) AS TotalSizeMB,
    CONVERT(DECIMAL(18,2), au.used_pages * 8 / 1024.0) AS UsedSizeMB,
    CONVERT(DECIMAL(18,2), (au.used_pages - au.data_pages) * 8 / 1024.0) AS IndexSizeMB,
    CONVERT(DECIMAL(18,2), (au.total_pages - au.used_pages) * 8 / 1024.0) AS UnusedSizeMB
FROM 
    sys.tables t
    INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
    LEFT JOIN sys.indexes i ON t.object_id = i.object_id AND i.index_id IN (0,1)
    LEFT JOIN sys.partitions p ON t.object_id = p.object_id AND i.index_id = p.index_id
    LEFT JOIN sys.allocation_units au ON p.partition_id = au.container_id
WHERE 
    t.is_ms_shipped = 0
GROUP BY 
    s.name, t.name, p.rows, au.total_pages, au.used_pages, au.data_pages
ORDER BY 
    TotalSizeMB DESC;

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *