T-SQL: Listar todas las tablas de una base de datos con sus respectivos tamaños

¿Habéis necesitado alguna vez saber el tamaño que ocupa cada tabla de una base de datos en SQL Server?. Investigando sobre el tema, he logrado obtener la consulta con la que obtenemos esa información.

Básicamente se trata de hacer una consulta de la tabla “sysindexes”, pero al tener muchos campos y algunos datos directamente ilegibles construimos una consulta haciendo las conversiones de datos solo de los campos que nos interesan, así como también los filtros respectivos para que no se incluya información que no sean propiedades de una tabla. Finalmente a esta consulta le podemos dar un formato numérico más legible y ordenarlo por el campo que nos sea de interés. En el siguiente ejemplo está ordenado descendentemente por número de registros que contiene la tabla.

SELECT
    X.[name],
    REPLACE(CONVERT(varchar, CONVERT(money, X.[rows]), 1), '.00', '')
        AS [rows],
    REPLACE(CONVERT(varchar, CONVERT(money, X.[reserved]), 1), '.00', '')
        AS [reserved],
    REPLACE(CONVERT(varchar, CONVERT(money, X.[data]), 1), '.00', '')
        AS [data],
    REPLACE(CONVERT(varchar, CONVERT(money, X.[index_size]), 1), '.00', '')
        AS [index_size],
    REPLACE(CONVERT(varchar, CONVERT(money, X.[unused]), 1), '.00', '')
        AS [unused]
FROM
(SELECT
    CAST(object_name(id) AS varchar(50))
        AS [name],
    SUM(CASE WHEN indid < 2 THEN CONVERT(bigint, [rows]) END)
        AS [rows],
    SUM(CONVERT(bigint, reserved)) * 8
        AS reserved,
    SUM(CONVERT(bigint, dpages)) * 8
        AS data,
    SUM(CONVERT(bigint, used) - CONVERT(bigint, dpages)) * 8
        AS index_size,
    SUM(CONVERT(bigint, reserved) - CONVERT(bigint, used)) * 8
        AS unused
    FROM sysindexes WITH (NOLOCK)
    WHERE sysindexes.indid IN (0, 1, 255)
        AND sysindexes.id > 100
        AND object_name(sysindexes.id) <> 'dtproperties'
    GROUP BY sysindexes.id WITH ROLLUP
) AS X
WHERE X.[name] is not null
ORDER BY X.[rows] DESC

 

T-SQL

Espero que os sea de utilidad.

2 Comentarios

  1. gracias por la ayuda con el
    sql

Un Trackback

  1. [...] un artículo anterior mostraba un Script para Listar todas las tablas de una base de datos con sus respectivos tamaños. Aquí una forma mas simple en el supuesto caso que solo quisiéramos ver las tablas y sus [...]

Publicar un Comentario

Tu email nunca será publicado o compartido. Los campos requeridos están marcados con un *

*
*

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • Archivos

  • Visitas