Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un montón es una tabla sin un índice agrupado. Se pueden crear uno o varios índices sin clúster en tablas almacenadas como montones. Los datos se almacenan en el montón sin especificar un orden. Normalmente, los datos se almacenan inicialmente en el orden en el que se insertan las filas en la tabla, pero el motor de base de datos puede mover datos en el montón para almacenar las filas de forma eficaz; por lo que no se puede predecir el orden de los datos. Para garantizar el orden de las filas devueltas desde un montón, debe usar la cláusula ORDER BY. Para especificar el orden de almacenamiento de las filas, cree un índice agrupado en la tabla para que la tabla no sea un montón.
Nota:
A veces hay buenas razones para dejar una tabla como un montón en lugar de crear un índice agrupado, pero el uso de montones de forma eficaz es una aptitud avanzada. La mayoría de las tablas deben tener un índice agrupado cuidadosamente elegido a menos que exista una buena razón para dejar la tabla como un montón.
Cuándo usar un montículo
Si una tabla es un montón y no tiene ningún índice no clúster, se debe examinar toda la tabla (un examen de tabla) para buscar ninguna fila. Esto puede ser aceptable cuando la tabla es pequeña, como una lista de las 12 oficinas regionales de una empresa.
Cuando una tabla se almacena como un montón, las filas individuales se identifican por referencia a un identificador de fila (RID) que consta del número de archivo, el número de página de datos y la ranura de la página. El identificador de fila es una estructura pequeña y eficaz. A veces, los arquitectos de datos usan heaps cuando siempre se accede a los datos a través de índices no agrupados y el RID es menor que una clave de índice clúster.
Cuándo no usar un heap
No use un montículo cuando los datos suelen devolverse en orden. Un índice agrupado en la columna de ordenación podría evitar la operación de ordenación.
No use un montículo cuando los datos se agrupan con frecuencia. Los datos deben ordenarse antes de agruparlos y un índice agrupado en la columna de ordenación podría evitar la operación de ordenación.
No use un montículo cuando se consultan con frecuencia intervalos de datos de la tabla. Un índice agrupado en la columna de rango evitará ordenar todo el montón.
No use un montón si no hay índices no agrupados y la tabla es grande. En un montón, se deben leer todas las filas del montón para encontrar cualquier fila.
Administración de montones
Para crear un montón, cree una tabla sin un índice agrupado. Si una tabla ya tiene un índice agrupado, quite el índice agrupado para convertir la tabla en un montón.
Para eliminar un montículo, cree un índice agrupado en el montículo.
Para reconstruir una pila y reclamar espacio desperdiciado, cree un índice agrupado en la pila y luego elimine ese índice agrupado.
Advertencia
La creación o eliminación de índices agrupados requiere volver a escribir toda la tabla. Si la tabla tiene índices no clúster, todos los índices no clúster deben volver a crearse cada vez que se cambie el índice agrupado. Por lo tanto, cambiar de un montón a una estructura de índice agrupada o atrás puede tardar mucho tiempo y requerir espacio en disco para reordenar los datos en tempdb.