sqlite.h


CREATE INDEX

Sintaxis CREATE INDEX
CREATE INDEX

Indexar una columna:

Sintaxis Indexed column
Indexed column

La sentencia CREATE INDEX consiste en las palabras claves CREATE INDEX seguidas por el nombre del nuevo índice, la palabra clave ON, el nombre de una tabla creada previamente que se va a indexar, y de una lista de nombres entre paréntesis de las columnas de la tabla que se van a usar como clave de índice.

Cada nombre de columna puede estar seguido por una de las palabras clave ASC o DESC para indicar la dirección del orden. Esa dirección puede ser o no ignorada dependiendo del formato del fichero de la base de datos. El formato de archivo "compatible" (legacy) ignora el orden del índice. El formato de fichero de índices descendente tiene en cuenta la dirección del orden. Sólo las copias de SQLite más recientes que la versión 3.3.0 (publicada en 10-01-2006) son capaces de entender el nuevo formato de índices descendentes y para mantener la compatibilidad con versiones de SQLite más antiguas, y así se genera el fichero de compatibilidad por defecto. Usar la opción "pragma" legacy_file_format para modificar este comportamiento y generar bases de datos que usen el nuevo formato de fichero. Versiones futuras de SQLite pueden comenzar a generar el nuevo formato de fichero por defecto.

La cláusula COLLATE que sigue a cada nombre de columna opcionalmente define una secuencia de clasificación usada para las entradas de texto en esa columna. La secuencia de clasificación por defecto es la definida para la columna en la sentencia CREATE TABLE. O si no hay orden de clasificación es definido, se usa el incorporado en la secuencia binaria de clasificación.

No existen límites arbitrarios en el número de índices que pueden ser asociados a una tabla. El número de columnas en un índice está limitado al valor asignado por sqlite3_limit(SQLITE_LIMIT_COLUMN,...).

Si aparece la palabra clave UNIQUE entre CREATE y INDEX, entonces no se permitirán entradas duplicadas del índice. Cualquier intento de insertar una entrada duplicada provocará un error. A efectos de índices únicos, todos los valores NULL se consideran diferentes de todos los valores NULL, y por lo tanto, únicos. Esta es una de las dos posibles interpretaciones del estándar SQL-92 (el lenguaje en el estádar es ambiguo) y es la interpretación seguida por PostgreSQL, MySQL, Firebird, y Oracle. Informix y Microsoft SQL Server siguen la otra interpretación del estándar.

Si está presente la cláusula opcional IF NOT EXISTS y existe un índice con el mismo nombre, esta sentencia queda inoperante.

Los índices se eliminan con la sentencia DROP INDEX.