Colocar índices en grupos de archivos

Al desarrollar la estrategia de diseño del índice, debe tener en cuenta la ubicación de los índices en los grupos de archivos asociados con la base de datos. La selección cuidadosa del grupo de archivos o del esquema de partición puede mejorar el rendimiento de la consulta.

De forma predeterminada, los índices se almacenan en el mismo grupo de archivos que la tabla base en la que se crea el índice. Un índice agrupado sin particiones y la tabla de la base siempre residen en el mismo grupo de archivos. Sin embargo, puede hacer lo siguiente:

  • Crear índices no agrupados en un grupo de archivos diferente del grupo de archivos de la tabla base.

  • Crear particiones de índices agrupados y no agrupados repartidos en varios grupos de archivos.

  • Mover una tabla de un grupo de archivos a otro quitando el índice agrupado y especificando un nuevo grupo de archivos o un esquema de partición en la cláusula MOVE TO de la instrucción DROP INDEX o utilizando la instrucción CREATE INDEX con la cláusula DROP_EXISTING.

Si se crea el índice no agrupado en otro grupo de archivos, es posible mejorar el rendimiento si los grupos de archivos utilizan distintas unidades físicas con sus propios controladores. De ese modo, la información de índice y los datos pueden leerse en paralelo mediante varios cabezales de disco. Por ejemplo, si la misma consulta utiliza Table_A del grupo de archivos f1 e Index_A del grupo de archivos f2, se puede mejorar el rendimiento debido a que se utilizan ambos grupos de archivos sin causar un conflicto. Sin embargo, si la Table_A examina la consulta pero no se hace referencia a Index_A, sólo se utiliza el grupo de archivos f1. Esto no produce ninguna mejora de rendimiento.

Como no se puede predecir qué tipo de acceso tendrá lugar ni cuándo, la mejor decisión consiste en repartir las tablas e índices en todos los grupos de archivos. De este modo se garantiza el acceso a todos los discos, ya que todos los datos e índices están repartidos por igual entre todos los discos independientemente de la forma de acceso a los datos. También se trata de un método más sencillo para los administradores de sistemas.

Particiones entre varios grupos de archivos

También puede considerar la opción de crear particiones de clúster y no agrupados en varios grupos de archivos. Los índices con particiones se dividen horizontalmente o por filas, basándose en una función de partición. La función de partición define cómo se asigna cada fila a un conjunto de particiones en los valores de ciertas columnas, denominadas columnas de partición. Un esquema de partición especifica la asignación de las particiones a un conjunto de grupos de archivos.

La creación de particiones de un índice puede proporcionar las siguientes ventajas:

  • Proporcionar sistemas escalables que hacen que los índices grandes sean más fáciles de administrar. Los sistemas OLTP, por ejemplo, pueden implementar aplicaciones orientadas a particiones que gestionan índices grandes.

  • Realizar consultas de forma más rápida y eficiente. Cuando las consultas tienen acceso a varias particiones de un índice, el optimizador de consultas puede procesar particiones individuales simultáneamente y excluir particiones que no están afectadas por la consulta.

Para obtener más información, vea Tablas e índices con particiones.

Para crear un nuevo índice en un grupo de archivos específico

CREATE INDEX

Para mover una tabla o índice existentes a un grupo de archivos diferente

Cómo mover un índice existente a un grupo de archivos distinto (SQL Server Management Studio)

DROP INDEX MOVE TO

CREATE INDEX WITH DROP_EXISTING