CREATE INDEX (SQL Server Compact)

Crea un índice en una tabla especificada. Los índices se pueden crear antes de que haya datos en la tabla.

Sintaxis

CREATE [UNIQUE] [NONCLUSTERED] INDEX index_name ON table_name (column_name [ASC|DESC][,…n])
WITH (STATISTICS_NORECOMPUTE = { ON | OFF })]

Argumentos

Término

Definición

UNIQUE

Crea un índice único en una tabla. Un índice único es aquel en el que no está permitido que dos filas tengan el mismo valor de índice.

SQL Server Compact comprueba si hay valores duplicados al crear el índice (si ya hay datos) y realiza una comprobación cada vez que se agregan datos mediante una instrucción INSERT o UPDATE. Es necesario eliminar los duplicados antes de crear un índice único para las columnas. Si hay valores de clave duplicados, se cancela la instrucción CREATE INDEX y se devuelve un error. Solo se puede crear un índice único para las columnas que estén definidas como NOT NULL.

Cuando hay un índice único, las instrucciones UPDATE o INSERT que generarían valores de clave duplicados se revierten y SQL Server Compact devuelve un error. Esto es aplicable incluso si la instrucción UPDATE o INSERT cambia muchas filas, pero solo genera un duplicado.

NONCLUSTERED

Crea un índice que especifica el orden lógico de una tabla. Con un índice no agrupado, el orden físico de las filas de datos es independiente del orden indizado. Este es el único tipo de índice compatible.  (El valor predeterminado es NONCLUSTERED).

index_name

Especifica el nombre del índice. Los nombres de índice deben ser únicos dentro de una tabla, pero no dentro de una base de datos.

table_name

Especifica el nombre de la tabla en la que se creará el índice.

Esta tabla contiene la columna o columnas que se van a incluir en el índice.

column name

La columna o columnas a las que afecta el índice. Especifique dos o más nombres de columnas para crear un índice compuesto de los valores combinados en las columnas especificadas. Muestra una lista de las columnas que se incluirán en el índice compuesto, con un criterio de ordenación/prioridad, dentro de los paréntesis situados después de la tabla.

NotaNota
Las columnas que contienen tipos de datos ntext o image no pueden especificarse como columnas de un índice.

ASC | DESC ]

Determina el orden ascendente (ASC) o descendente (DSC) de una determinada columna de índice. El valor predeterminado es ASC.

n

Marcador de posición que indica que se pueden especificar varias columnas para un determinado índice. El número máximo de columnas que pueden participar en un índice es 16.

STATISTICS_NORECOMPUTE

Especifica si se vuelven a calcular las estadísticas de distribución. El valor predeterminado es OFF.

  • ON

    Las estadísticas no actualizadas no se vuelven a calcular de forma automática.

  • OFF

    Se habilita la actualización automática de las estadísticas.

Para restaurar la actualización automática de las estadísticas, establezca STATISTICS_NORECOMPUTE en OFF o ejecute UPDATE STATISTICS sin la cláusula NORECOMPUTE.

Nota importanteImportante
Deshabilitar el cálculo automático de estadísticas de distribución puede impedir que el optimizador de consultas elija los planes de ejecución óptimos de las consultas relativas a la tabla.

Ejemplo

En el siguiente ejemplo se crea un índice único en la tabla MyCustomers.

CREATE TABLE MyCustomers (CustID int, CompanyName nvarchar(50));
CREATE UNIQUE INDEX idxCustId ON MyCustomers (CustId);

Vea también

Conceptos

Ajuste del rendimiento de las consultas (SQL Server Compact)

Objetos de base de datos