Consulta SQL Server para obtener el número de registros de cada tabla

La siguiente consulta es muy útil cuando queremos ver el número de registros que contiene cada tabla de una base de datos SQL Server. Normalmente cuantos mas registros haya en una tabla, mas espacio ocupará, así que es una forma de averiguar que tablas ocupan mas tamaño en una base de datos.

select si.rows as 'filas', SO.Name as Tabla, SI.name as 'Index', SFG.groupname as 'Filegroup'
from sysobjects as SO 
    join sysindexes as SI on SO.Id = SI.id 
    join sysfilegroups as SFG on SI.GroupId = SFG.GroupId
order by si.rows desc, SO.Name , SI.name, SFG.GroupName

También hay otra opción mas completa, encontré este procedimiento hace un tiempo:

CREATE PROCEDURE GetAllTableSizes
AS
/*
    Obtains spaced used data for ALL user tables in the database
*/
DECLARE @TableName VARCHAR(100)    --For storing values in the cursor
 
--Cursor to get the name of all user tables from the sysobjects listing
DECLARE tableCursor CURSOR
FOR
select [name]
from dbo.sysobjects 
where  OBJECTPROPERTY(id, N'IsUserTable') = 1
FOR READ ONLY
 
--A procedure level temp table to store the results
CREATE TABLE #TempTable
(
    tableName varchar(100),
    numberofRows varchar(100),
    reservedSize varchar(50),
    dataSize varchar(50),
    indexSize varchar(50),
    unusedSize varchar(50)
)
 
--Open the cursor
OPEN tableCursor
 
--Get the first table name from the cursor
FETCH NEXT FROM tableCursor INTO @TableName
 
--Loop until the cursor was not able to fetch
WHILE (@@Fetch_Status >= 0)
BEGIN
    --Dump the results of the sp_spaceused query to the temp table
    INSERT  #TempTable
        EXEC sp_spaceused @TableName
 
    --Get the next table name
    FETCH NEXT FROM tableCursor INTO @TableName
END
 
--Get rid of the cursor
CLOSE tableCursor
DEALLOCATE tableCursor
 
--Select all records so we can use the reults
SELECT * 
FROM #TempTable
 
--Final cleanup!
DROP TABLE #TempTable
 
GO
Despues podemos ejecutar el procedimiento con el comando
EXEC GetAllTableSizes 

y podriamos ver el resultado, algo como:

2 respuestas a “Consulta SQL Server para obtener el número de registros de cada tabla”

  1. Luis Canchari dice:

    Excelente Javier

Deja un comentario

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

Copyright 2018 Javier Antó | Javi