Evaluer la volumétrie d'une base de données
2016-03-15 14:07:21
2016-03-15 14:07:21
Voici une petite requête pour évaluer quelles tables prennent le plus de place dans une base de données. Très pratique lorsque l'on cherche à réduire la volumétrie.
SELECT [Nom de la table] = OBJECT_NAME(p.object_id) ,[Nombre de lignes] = SUM(CASE WHEN (p.[index_id] < 2) AND (a.[type] = 1) THEN p.[rows] ELSE 0 END) ,[Volume alloué (kb)] = (SUM(a.total_pages) * 8192 / 1024) ,[Volume utilisé par les données (kb)] = (SUM(CASE WHEN a.[type] <> 1 THEN a.[used_pages] WHEN p.[index_id] < 2 THEN a.[data_pages] ELSE 0 END) * 8192 / 1024) ,[Volume utilisé par les indexs (kb)] = ((SUM(a.[used_pages]) - SUM(CASE WHEN a.[type] <> 1 THEN a.[used_pages] WHEN p.[index_id] < 2 THEN a.[data_pages] ELSE 0 END)) * 8192 / 1024) FROM sys.partitions p INNER JOIN sys.allocation_units a ON p.[partition_id] = a.[container_id] INNER JOIN sys.sysobjects s ON p.[object_id] = s.[id] WHERE s.[type] = 'U' -- On ne conserve que les tables Utilisateur (exclusion des tables système) GROUP BY p.[object_id] ORDER BY [Volume alloué (kb)] DESC, object_name(p.[object_id])