Directrices para diseñar índices agrupados

Los índices agrupados ordenan y almacenan las filas de los datos de la tabla de acuerdo con los valores de la clave del índice. Sólo puede haber un índice agrupado por cada tabla, porque las filas de datos sólo pueden estar ordenadas de una forma. Para obtener más información acerca de la arquitectura de los índices agrupados, vea Estructuras de índices agrupados.

Salvo excepciones, todas las tablas deben incluir un índice agrupado definido en las columnas que cuentan con las siguientes características:

  • Se pueden utilizar en consultas frecuentes.

  • Proporcionan un alto grado de unicidad.

    [!NOTA] Cuando crea una restricción PRIMARY KEY, se crea automáticamente un índice único en las columnas. De forma predeterminada, este índice está agrupado; sin embargo, puede especificar un índice no agrupado cuando crea la restricción.

  • Se pueden utilizar en consultas de intervalo.

Si el índice agrupado no se crea con la propiedad UNIQUE, Database Engine (Motor de base de datos) agrega automáticamente una columna de unicidad de 4 bytes a la tabla. Cuando se necesita, Database Engine (Motor de base de datos) agrega automáticamente un valor de unicidad a una fila para que cada clave sea única. Esta columna y sus valores se utilizan de forma interna; los usuarios no pueden verlos ni tener acceso a ellos.

Consideraciones sobre las consultas

Antes de crear índices agrupados, debe conocer cómo se tiene acceso a los datos. Considere que utiliza un índice agrupado en consultas que realizan lo siguiente:

  • Devuelven un intervalo de valores mediante la utilización de operadores como BETWEEN, >, >=, < y <=.
    Cuando la fila se encuentra con el primer valor mediante el índice agrupado, se garantiza que las filas con los valores indizados posteriores son físicamente adyacentes. Por ejemplo, si una consulta recupera registros entre un intervalo de números de pedidos de ventas, un índice agrupado en la columna SalesOrderNumber puede localizar rápidamente la fila que contiene el número de pedido de ventas inicial y, a continuación, recuperar todas las filas siguientes de la tabla hasta alcanzar el último número de pedido de ventas.
  • Devuelven grandes conjuntos de resultados.
  • Utilizan cláusulas JOIN; por lo general, son columnas de clave externa.
  • Utilizan cláusulas ORDER BY o GROUP BY.
    Un índice en las columnas especificadas en la cláusula ORDER BY o GROUP BY puede eliminar la necesidad de que Database Engine (Motor de base de datos) ordene los datos, puesto que las filas ya están ordenadas. De ese modo, el rendimiento de las consultas aumenta.

Consideraciones sobre las columnas

Por regla genera, debe definir la clave de índice agrupado con el menor número de columnas posible. Considere columnas que cuentan con uno o varios de los siguientes atributos:

  • Son únicas o contienen muchos valores distintos
    Por ejemplo, un Id. de empleado identifica de forma exclusiva a los empleados. Un índice agrupado o una restricción PRIMARY KEY en la columna EmployeeID mejoraría el rendimiento de las consultas que buscan información del empleado basándose en el número de Id. del empleado. También se podría crear un índice agrupado en las columnas LastName, FirstName y MiddleName, ya que los registros de empleados se agrupan y se consultan con frecuencia de esta forma y la combinación de estas columnas seguiría proporcionando un alto grado de diferencia.
  • Se tiene acceso a ellas de forma secuencial
    Por ejemplo, un Id. de producto identifica de forma exclusiva los productos de la tabla Production.Product en la base de datos AdventureWorks. Un índice agrupado en ProductID mejoraría las consultas donde se especifica una búsqueda secuencial, como WHERE ProductID BETWEEN 980 and 999. Esto se debe a que las filas se almacenan de forma ordenada en esta columna de clave.
  • Se definen como IDENTITY, ya que la columna va a ser única en la tabla.
  • Se utilizan con frecuencia para ordenar los datos recuperados de una tabla.
    Puede resultar conveniente agrupar, es decir, ordenar físicamente la tabla de dicha columna para evitar una operación de ordenación cada vez que se consulta la columna.

Los índices agrupados no son adecuados para los siguientes atributos:

  • Columnas sometidas a cambios frecuentes
    Esto provoca que se mueva toda la fila, ya que Database Engine (Motor de base de datos) debe mantener los valores de los datos de la fila ordenados físicamente. Esta consideración es importante en sistemas de procesamiento de transacciones de gran volumen en los que los datos tienden a ser volátiles.
  • Claves amplias
    Las claves amplias se componen de varias columnas o varias columnas de gran tamaño. Los valores clave del índice agrupado se utilizan en todos los índices no agrupados como claves de búsqueda. Los índices no agrupados definidos en la misma tabla serán bastante más grandes, ya que sus entradas contienen la clave de agrupación y las columnas de clave definidas para dicho índice no agrupado.

Opciones del índice

Cuando se crea un índice agrupado, se pueden especificar varias opciones de índice. Generalmente, los índices agrupados son bastante grandes, por lo que debe prestarse especial atención a las opciones siguientes:

  • SORT_IN_TEMPDB
  • DROP_EXISTING
  • FILLFACTOR
  • ONLINE

Para obtener más información, vea Establecer opciones de índice.

Vea también

Conceptos

Crear índices agrupados
Crear índices (motor de base de datos)
Crear y modificar restricciones PRIMARY KEY
Directrices generales para diseñar índices
Directrices para diseñar índices únicos

Ayuda e información

Obtener ayuda sobre SQL Server 2005