Command to find Table size
Below Command will provide you output of each table (Table size,index size)
This command gives you same output Reports---> Standard Reports ---> Disk usages by top tables
CREATE TABLE #temp (
table_name sysname ,
row_count INT ,
reserved_size VARCHAR (50),
data_size VARCHAR (50),
index_size VARCHAR (50),
unused_size VARCHAR (50))
SET NOCOUNT ON
INSERT #temp
exec sp_MSforeachtable " exec sp_spaceused '?' "
SELECT a.table_name,
a.row_count,
COUNT (*) AS col_count,
a.reserved_size,
a.data_size,
a.index_size,
a.unused_size
FROM #temp a
INNER JOIN information_schema.columns b
ON a.table_name collate database_default
= b.table_name collate database_default
GROUP BY a.table_name, a.row_count,a.reserved_size, a.data_size , a.index_size,a.unused_size
ORDER BY CAST ( REPLACE (a.reserved_size, ' KB' , '' ) AS float ) DESC
DROP TABLE #temp
OUTPUT:
-----------------------------------------------------------------------------------------------------------
Below Command will provide you output of each table excluding index
SELECT
t.NAME AS TableName,
p.[Rows],
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, p.[Rows]
ORDER BY
p.[rows] desc;
OUTPUT:
Below Command will provide you output of each table (Table size,index size)
This command gives you same output Reports---> Standard Reports ---> Disk usages by top tables
CREATE TABLE #temp (
table_name sysname ,
row_count INT ,
reserved_size VARCHAR (50),
data_size VARCHAR (50),
index_size VARCHAR (50),
unused_size VARCHAR (50))
SET NOCOUNT ON
INSERT #temp
exec sp_MSforeachtable " exec sp_spaceused '?' "
SELECT a.table_name,
a.row_count,
COUNT (*) AS col_count,
a.reserved_size,
a.data_size,
a.index_size,
a.unused_size
FROM #temp a
INNER JOIN information_schema.columns b
ON a.table_name collate database_default
= b.table_name collate database_default
GROUP BY a.table_name, a.row_count,a.reserved_size, a.data_size , a.index_size,a.unused_size
ORDER BY CAST ( REPLACE (a.reserved_size, ' KB' , '' ) AS float ) DESC
DROP TABLE #temp
OUTPUT:
-----------------------------------------------------------------------------------------------------------
Below Command will provide you output of each table excluding index
SELECT
t.NAME AS TableName,
p.[Rows],
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, p.[Rows]
ORDER BY
p.[rows] desc;
OUTPUT:
No comments:
Post a Comment