index_option (Transact-SQL)

Especifica un conjunto de opciones que se pueden aplicar a un índice que forma parte de una definición de restricción creada con ALTER TABLE.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

{ 
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | SORT_IN_TEMPDB = { ON | OFF } 
  | ONLINE = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE |ROW | PAGE}
      [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
            [ , ...n ] ) ]
}

<range> ::= 
<partition_number_expression> TO <partition_number_expression>

<single_partition_rebuild__option> ::=
{
    SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = {NONE | ROW | PAGE } }
}

Argumentos

  • PAD_INDEX = { ON | OFF }
    Especifica el relleno de índice. El valor predeterminado es OFF.

    • ON
      El porcentaje de espacio disponible especificado por FILLFACTOR se aplica a las páginas de nivel intermedio del índice.

    • OFF o no se ha especificado fillfactor.
      Las páginas de nivel intermedio se llenan casi al máximo de su capacidad, dejando espacio suficiente para al menos una fila del tamaño máximo que admite el índice, en función del conjunto de claves de las páginas intermedias.

  • FILLFACTOR **=**fillfactor
    Especifica un porcentaje que indica cuánto debe llenar el Database Engine (Motor de base de datos) el nivel hoja de cada página de índice durante la creación o modificación de los índices. El valor especificado debe ser un entero de 1 a 100. El valor predeterminado es 0.

    [!NOTA]

    Los valores de factor de relleno 0 y 100 son idénticos en todos sentidos.

  • IGNORE_DUP_KEY = { ON | OFF }
    Especifica la respuesta de error cuando una operación de inserción intenta insertar valores de clave duplicados en un índice único. La opción IGNORE_DUP_KEY se aplica solamente a operaciones de inserción realizadas tras crear o volver a generar el índice. La opción no tiene efecto cuando se ejecutan CREATE INDEX, ALTER INDEX o UPDATE. El valor predeterminado es OFF.

    • ON
      Se producirá un mensaje de advertencia cuando se inserten valores de clave duplicados en un índice único. Sólo las filas que infrinjan la restricción de unicidad darán error.

    • OFF
      Se producirá un mensaje de error cuando se inserten valores de clave duplicados en un índice único. Toda la operación INSERT se revertirá.

    IGNORE_DUP_KEY no se puede establecer en ON para los índices creados en una vista, los índices que no sean únicos, los índices XML, los índices espaciales y los índices filtrados.

    Para ver IGNORE_DUP_KEY, utilice sys.indexes.

    En la sintaxis compatible con versiones anteriores, WITH IGNORE_DUP_KEY es equivalente a WITH IGNORE_DUP_KEY = ON.

  • STATISTICS_NORECOMPUTE = { ON | OFF }
    Especifica si se vuelven a calcular las estadísticas. El valor predeterminado es OFF.

    • ON
      Las estadísticas no actualizadas no se vuelven a calcular automáticamente.

    • OFF
      La actualización automática de estadísticas está habilitada.

  • ALLOW_ROW_LOCKS = { ON | OFF }
    Especifica si se admiten los bloqueos de fila. El valor predeterminado es ON.

    • ON
      Los bloqueos de fila se admiten al obtener acceso al índice. Database Engine (Motor de base de datos) determina cuándo se utilizan los bloqueos de fila.

    • OFF
      Los bloqueos de fila no se utilizan.

  • ALLOW_PAGE_LOCKS = { ON | OFF }
    Especifica si se admiten los bloqueos de página. El valor predeterminado es ON.

    • ON
      Los bloqueos de página se admiten al obtener acceso al índice. El Database Engine (Motor de base de datos) determina cuándo se utilizan los bloqueos de página.

    • OFF
      Los bloqueos de página no se utilizan.

  • SORT_IN_TEMPDB = { ON | OFF }
    Especifica si los resultados de orden se almacenan en tempdb. El valor predeterminado es OFF.

    • ON
      Los resultados de orden intermedios que se utilizan para generar el índice se almacenan en tempdb. Esto puede reducir el tiempo necesario para crear un índice si tempdb y la base de datos de usuarios están en conjuntos de discos distintos. Sin embargo, esto aumenta la cantidad de espacio en disco utilizado durante la creación del índice.

    • OFF
      Los resultados de orden intermedios se almacenan en la misma base de datos que el índice.

  • ONLINE = { ON | OFF }
    Especifica si las tablas subyacentes y los índices asociados estarán disponibles para consultas y modificación de los datos durante la operación del índice. El valor predeterminado es OFF.

    [!NOTA]

    No es posible crear índices clúster únicos en línea. Entre estos se incluyen los índices creados a causa de una restricción UNIQUE o KEY PRIMARY.

    • ON
      Los bloqueos de tabla de larga duración no se mantienen durante toda la operación del índice. Durante la fase principal de la operación, solo se mantiene un bloqueo de intención compartida (IS) en la tabla de origen. Esto habilita las consultas o actualizaciones en la tabla subyacente y en los índices. Al inicio de la operación, se mantiene un bloqueo compartido (S) en el objeto de origen durante un período de tiempo muy corto. Al final de la operación, se adquiere un bloqueo S (compartido) sobre el origen durante un corto período de tiempo, si se está creando un índice no clúster; o bien se adquiere un bloqueo SCH-M (modificación del esquema) cuando se crea o se quita un índice clúster en línea, y cuando se vuelve a crear un índice clúster o no clúster. ONLINE no se puede establecer en ON cuando se crea un índice en una tabla temporal local.

    • OFF
      Los bloqueos de tabla se aplican durante la operación de índice. Una operación de índice sin conexión para crear, volver a crear o quitar un índice clúster, o para volver a crear o quitar un índice no clúster, adquiere un bloqueo de modificación del esquema (Sch-M) de la tabla. De esta forma, se evita que todos los usuarios tengan acceso a la tabla subyacente durante la operación. Una operación de índice sin conexión que crea un índice no clúster adquiere un bloqueo compartido (S) en la tabla. De este modo, se evita que se realicen actualizaciones en la tabla subyacente, pero se permite la realización de operaciones de lectura, como las instrucciones SELECT.

    Para obtener más información, vea Cómo funcionan las operaciones de índice en línea. Para obtener más información acerca de los bloqueos, vea Modos de bloqueo.

    [!NOTA]

    Las operaciones de índices en línea únicamente están disponibles en las ediciones Enterprise, Developer y Evaluation de SQL Server.

  • MAXDOP **=**max_degree_of_parallelism
    Invalida la opción de configuración Grado máximo de paralelismo durante la operación del índice. Para obtener más información, vea max degree of parallelism (opción). Utilice MAXDOP para limitar el número de procesadores que se utilizan en la ejecución de un plan paralelo. El máximo es 64 procesadores.

    max_degree_of_parallelism puede ser:

    • 1
      Suprime la generación de planes paralelos.

    • >1
      Restringe al número especificado el número máximo de procesadores que se utilizan en una operación de índices paralelos.

    • 0 (predeterminado)
      Utiliza el número real, o un número inferior, de procesadores en función de la carga de trabajo actual del sistema.

    Para obtener más información, vea Configurar operaciones de índice en paralelo.

    [!NOTA]

    Las operaciones de índices en paralelo únicamente están disponibles en las ediciones Enterprise, Developer y Evaluation de SQL Server.

  • DATA_COMPRESSION
    Especifica la opción de compresión de datos para la tabla, el número de partición o el intervalo de particiones especificado. Las opciones son las siguientes:

    • NONE
      No se comprimen la tabla ni las particiones especificadas.

    • ROW
      La tabla o las particiones especificadas se comprimen utilizando la compresión de fila.

    • PAGE
      La tabla o las particiones especificadas se comprimen utilizando la compresión de página.

    Para obtener más información acerca de la compresión, vea Crear tablas e índices comprimidos.

  • ON PARTITIONS ( { <expresión_de_número_de_particiones> | <intervalo> } [ ,...n ] )
    Especifica las particiones a las que se aplica el valor DATA_COMPRESSION. Si la tabla no tiene particiones, el argumento ON PARTITIONS generará un error. Si no se proporciona la cláusula ON PARTITIONS, la opción DATA_COMPRESSION se aplicará a todas las particiones de una tabla con particiones.

    <expresión_de_número_de_particiones> se puede especificar de las maneras siguientes:

    • Proporcionando el número de una partición, por ejemplo: ON PARTITIONS (2).

    • Proporcionando los números de partición de varias particiones separados por comas, por ejemplo: ON PARTITIONS (1, 5).

    • Proporcionar intervalos y particiones individuales: ON PARTITIONS (2, 4, 6 TO 8).

    <intervalo> se puede especificar como números de partición separados por la palabra TO, por ejemplo: ON PARTITIONS (6 TO 8).

    Para establecer diferentes tipos de compresión de datos para distintas particiones, especifique la opción DATA_COMPRESSION más de una vez, por ejemplo:

    REBUILD WITH 
    (
    DATA_COMPRESSION = NONE ON PARTITIONS (1), 
    DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
    DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
    )
    
  • <opción_de_regeneración_de_partición_única>
    En la mayoría de los casos, la regeneración de un índice hace que se vuelvan a generar todas las particiones de un índice con particiones. Cuando las opciones siguientes se aplican a una partición única, no vuelven a generar todas las particiones.

    • SORT_IN_TEMPDB

    • MAXDOP

    • DATA_COMPRESSION

Notas

Para obtener una descripción completa de las opciones de índice, vea CREATE INDEX (Transact-SQL).