¿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
Si quieres más trucos de este tipo te invito a echarle un vistazo a este libro de SQL Server 2014 en Español
Comprar en Amazon |
Espero que os sea de utilidad.
gracias por la ayuda con el
sql
Un placer 😉
EXCELENTE APORTE MI ESTIMADO
Súper útil. Muchísimas gracias!!!
Gracias a ti por leerme. Me alegro que te haya sido de utilidad.
como se añadiría el nº de columnas de cada tabla
Muy buen aporte para listar tablas y compararlas.
Muy útil tu aportación, me fue de mucha ayuda, es precisamente lo que estaba buscando
Gracias, muy buena tu aportacion, 🙂
Muy buen aporte con ello, podre saber cuales son mis tablas con mayor incremento y uso al dia a dia
Gracias amigote me sirvió mucho tu consulta!!
Vale!
Muchas gracias….
Muchas gracias, super fácil
Hola, sabes con que vista y campo puedo agregar para que me aparezca el esquema? Gracias!