Saltar al contenido

Tamaño de tabla e índice en SQL Server

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *