Estructuras de índices no agrupados

Los índices no agrupados tienen la misma estructura de árbol b que los índices agrupados, excepto por las siguientes diferencias importantes:

  • Las filas de datos de la tabla subyacente no están ordenadas ni almacenadas basándose en sus claves no agrupadas.
  • La capa de hoja de un índice sin agrupar está compuesta por páginas de índices, en lugar de páginas de datos.

Los índices no agrupados se pueden definir en una tabla o vista con un índice agrupado o un montón. Cada fila del índice sin agrupar contiene un valor de clave no agrupada y un localizador de fila. Este localizador apunta a la fila de datos del índice agrupado o el montón que contiene el valor de clave.

Los localizadores de filas de las filas de índices no agrupados pueden ser un puntero a la fila o una clave de índice agrupado para una fila, tal como se describe a continuación:

  • Si la tabla es un montón, lo que significa que no tiene ningún índice agrupado, el localizador de fila es un puntero a la fila. El puntero se genera a partir del identificador (Id.) de archivo, el número de página y el número de la fila dentro de la página. El puntero completo se conoce como Id. de fila (RID).
  • Si la tabla tiene un índice agrupado o si el índice está en una vista indizada, el localizador de fila es la clave del índice agrupado para la fila. Si el índice agrupado no es un índice único, SQL Server 2005 hace que las claves duplicadas sean únicas agregando un valor generado internamente denominado valor de unicidad. Este valor de cuatro bytes no es visible para los usuarios. Sólo se agrega cuando es necesario para que la clave agrupada sea única para usarla en los índices no agrupados. SQL Server recupera la fila de datos buscando el índice agrupado con el valor de clave del índice agrupado que está almacenado en la fila de hoja del índice sin agrupar.

Los índices no agrupados tienen una fila en sys.partitions, con index_id >0 para cada partición utilizada por el índice. De forma predeterminada, un índice sin agrupar tiene una sola partición. Cuando un índice sin agrupar tiene varias particiones, cada una tiene una estructura de árbol b que contiene las filas de índice de esa partición específica. Por ejemplo, si un índice sin agrupar tiene cuatro particiones, habrá cuatro estructuras de árbol b, una en cada partición.

En función de los tipos de datos del índice sin agrupar, cada estructura de índice sin agrupar tendrá una o más unidades de asignación en las que almacenar y administrar los datos de una partición específica. Como mínimo, cada índice sin agrupar tendrá una unidad de asignación IN_ROW_DATA por partición encargada de almacenar las páginas de árbol b del índice. El índice sin agrupar también tendrá una unidad de asignación LOB_DATA por partición si contiene columnas de objetos grandes (LOB). También tendrá una unidad de asignación ROW_OVERFLOW_DATA por partición si contiene columnas de longitud variable que superen el límite de tamaño de fila de 8.060 bytes. Para obtener más información acerca de las unidades de asignación, vea Organización de tablas e índices. Las colecciones de páginas del árbol b están delimitadas por punteros root_page en la vista del sistema sys.system_internals_allocation_units.

ms177484.note(es-es,SQL.90).gifImportante:
La vista del sistema sys.system_internals_allocation_units es únicamente para uso interno y está sujeta a cambios. No se garantiza la compatibilidad.

En la siguiente ilustración se muestra la estructura de un índice sin agrupar en una sola partición.

Niveles de un índice no agrupado

Índices de columna incluidos

En SQL Server 2005, la funcionalidad de los índices no agrupados puede ampliarse si se agregan columnas incluidas, denominadas columnas sin clave, en el nivel de hoja del índice. Las columnas de clave se almacenan en todos los niveles de índice sin agrupar, mientras que las columnas sin clave sólo se almacenan en el nivel de hoja. Para obtener más información, vea Índice con columnas incluidas.

Vea también

Conceptos

Estructuras de índices agrupados
Estructuras de montón
Organización de tablas e índices

Ayuda e información

Obtener ayuda sobre SQL Server 2005