Saltear al contenido principal

Tabla HEAP en SQL Server. La ausencia de ordenamiento

Seguramente has visto en algún lugar citar a una tabla HEAP en SQL Server. Y básicamente cuando hablamos de HEAPs, nos referimos a tablas que no tienen un orden determinado, vale decir, carecen de un Clustered Index.

¿Me influye al consultar una Tabla Heap?

¡Por supuesto! Imagina una biblioteca llena de miles de libros y todos ellos distribuidos por donde puedan y sin ningún orden. ¿Podrías decir cuánto tiempo te tomará encontrar un libro con un título determinado?

Pasa exactamente igual con SQL Server. Cuando tú le mandas a buscar algo puntual sobre una tabla y no existe ningún orden a través del cuál pueda encontrar un camino adecuado, tendrá que hacer un scan de la tabla hasta obtener lo que pediste.

Mira cómo se comporta una tabla HEAP en SQL Server

Realizaremos a continuación una sencilla consulta sobre la tabla de países y ciudades que creamos en el artículo de uso de XACT_ABORT para abortar transacciones en caso de errores. Esta tabla fue creada con scripts que puedes encontrar en este enlace.

Simplemente quiero que veas el plan de ejecución de esta consulta.

Puedes claramente ver que la búsqueda solicitada se realiza a partir del Clustered Index.

Tabla Heap 1

Ahora bien, ¿qué pasaría si no existiera el Índice Clustered? Volvamos a ejecutar la misma consulta posterior a la eliminación de este índice y veamos el plan de ejecución.

Tabla Heap 2

Ahora puedes apreciar que el Plan de Ejecución necesita realizar un escaneo de la tabla para obtener los resultados.

¿Y esto en qué me afecta?

Basta con realizar una comparación de la cantidad de filas leídas por ambos casos.

Tabla Heap 3
Tabla Heap 4

Es evidente que la diferencia entre un escaneo de tabla (Table Scan) será más costoso que una búsqueda apoyada por un índice (Clustered Index Seek).

Finalmente

Está claro que el uso de ordenamiento en tablas te ayudará en las operaciones de búsquedas, y esto hará más eficientes y rápidas tus consultas. Sin embargo, hay muchas otras cosas de las que podemos hablar entorno a los índices de SQL Server.

Esta será solo una pequeña introducción a este mundo. Quédate atento a las noticias y suscríbete como participante para enterarte inmediatemente de las nuevas publicaciones. Si quieres ver un análisis de los índices que tienes en tu servidor puedes también Generar un Reporte de Uso de Ínidices de SQL Server.

Pablo Javier Fernández

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Deja una respuesta

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

Close search

Carrito

Volver arriba