Menu

Conocer el tamaño de los índices de una tabla

noviembre 29, 2010 - SQL Server

Entre tantas consultas que se realizan a la base de datos a diario por allá alguien grita desesperadamente, “la generación del reporte X demora demasiado, crea un índice para ese reporte”, y como el jefe lo necesitaba para hace 30 minutos realizamos la susodicha con todos los campos del reporte y allí murió el asunto, luego de unas semanas o meses quizá estamos en nuestra labor de desarrolladores de bases de datos haciéndole un mantenimiento y nos acordamos de aquel indice que alguna vez creamos y piensas “Ese reporte se genero solo una vez y no se necesita mas, será que ocupa mucho espacio este índice?”, para conocer cuanto ocupa actualmente un indice utilizamos la siguiente consulta:

SELECT i.name as IndexName, (s.used_page_count * 8) / 1024.0 AS SizeInMb
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('Person.Address')
ORDER BY i.name

Explicación

Estamos consultando de la tabla de sistema dm_db_partition_stat que almacena información estadística de las particiones que tengamos en nuestra BD, de alli tomamos cuantas paginas utiliza multiplicadas por 8 y divididas entre 1024 (recordemos que las paginas vienen en una unica presentacion de 8 Kb), hacemos INNER JOIN con la tabla de indices y de alli tomamos el nombre (Como crees que vamos a saberlo?, la tabla dm_db_partition_stat guarda solo el object_id) de ahi en adelante creo que esta en español y lo que nos arroja SQL Server es lo siguiente:

Obviamente en object_id(‘Person.Address’) colocas el nombre de la tabla a la cual le deseas conocer los tamaños de sus indices.

Happy coding!

Deja un comentario

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