Nuestro team redactor ha pasado horas investigando la resolución a tu interrogante, te regalamos la resolución y nuestro deseo es serte de mucha apoyo.
Solución:
sp_spaceused le da el tamaño de todos los índices combinados.
Si desea el tamaño de cada índice para una tabla, use una de estas dos consultas:
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
Los resultados suelen ser ligeramente diferentes pero dentro del 1%.
los exec sp_spaceused
sin parámetro muestra el resumen de toda la base de datos. La solución foreachtable genera un conjunto de resultados por tabla, que es posible que SSMS no pueda manejar si tiene demasiadas tablas.
Creé un script que recopila la información de la tabla a través de sp_spaceused
y muestra un resumen en un solo conjunto de registros, ordenados por tamaño.
create table #t
(
name nvarchar(128),
rows varchar(50),
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50)
)
declare @id nvarchar(128)
declare c cursor for
select '[' + sc.name + '].[' + s.name + ']' FROM sysobjects s INNER JOIN sys.schemas sc ON s.uid = sc.schema_id where s.xtype='U'
open c
fetch c into @id
while @@fetch_status = 0 begin
insert into #t
exec sp_spaceused @id
fetch c into @id
end
close c
deallocate c
select * from #t
order by convert(int, substring(data, 1, len(data)-3)) desc
drop table #t
En SQL 2012, obtener esta información a nivel de tabla se ha vuelto deliciosamente simple:
SQL Management Studio -> Haga clic derecho en Db -> Informes -> Informes estándar -> Uso de disco por tabla.
Disfrutar
Recuerda mostrar este tutorial si lograste el éxito.