SQLite: Índices

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQLite: Índices

Este tutorial de SQLite explica cómo Crear, soltar y renombrar índices En SQLite, con sintaxis y ejemplos.

¿Qué son los índices en SQLite?

La indexación es un método de ajuste del rendimiento que permite una recuperación más rápida de los registros. Un índice crea una entrada para cada valor que aparece en la columna indexada. Cada nombre de índice debe ser único dentro de la base de datos.

crear índice

Puede crear índices en SQLite usando la instrucción CREATE INDEX.

sintaxis

La sintaxis para crear un índice en SQLite es:

CREATE [UNIQUE] INDEX [IF NOT EXISTS] index_name
  ON table_name 
    (column1 [ASC | DESC],
     column2 [ASC | DESC],
     ...
     column_n  [ASC | DESC])
  [ WHERE conditions ];

ÚNICO significa que la combinación de valores en la columna indexada debe ser única. Opcional si no está presente. Si se especifica, la instrucción CREATE INDEX no generará un error si el índice ya existe. index_name El nombre asignado al índice. table_name El nombre de la tabla en la que se va a crear el índice. column1, column2, … column_n Las columnas que se utilizarán en el índice. ASC es opcional. El índice se ordena en orden ascendente por esa columna. DESC opcional. El índice se ordena en orden descendente por esa columna. La condición WHERE solo crea un índice parcial en un subconjunto de registros en la tabla.

ejemplo

Veamos un ejemplo de cómo crear un índice en SQLite.

Por ejemplo:

CREATE INDEX customer_idx
  ON customers (last_name);

En este ejemplo, creamos un índice en la tabla de clientes llamado customer_idx. Contiene un solo campo: el campo last_name.

También podemos crear un índice con múltiples campos, como en el siguiente ejemplo:

CREATE INDEX customer_idx
  ON customers (state, city);

Esto creará un índice llamado customer_idx que usa dos columnas: estado y ciudad.

índice único

Para crear un índice único en una tabla, debe especificar la palabra clave ÚNICA en la instrucción CREATE INDEX.

Por ejemplo:

CREATE UNIQUE INDEX customer_unique_idx
  ON customers (file_number);

Este ejemplo crea un índice único en el campo file_number para que el campo siempre contenga valores únicos y no se repita. Esta es una excelente manera de hacer cumplir la integridad en la base de datos si necesita valores únicos en columnas que no forman parte de la clave principal.

índice parcial

Puede crear índices parciales en tablas que contienen solo un subconjunto de registros en el índice.

Por ejemplo:

CREATE INDEX customer_idx
  ON customers (last_name)
  WHERE last_name IS NOT NULL;

Debido a que incluimos la cláusula WHERE, solo se crean índices parciales donde last_name no es NULL. Los registros con un valor NULL para last_name no se incluirán en el índice.

índice de caída

Puede usar la declaración DROP INDEX para eliminar índices en SQLite.

sintaxis

La sintaxis para eliminar un índice en SQLite es:

DROP INDEX [IF EXISTS] index_name;

index_name El nombre del índice a descartar. Opcional si está presente. Si se especifica, la instrucción DROP INDEX no generará un error si el índice no existe.

ejemplo

Veamos un ejemplo de cómo soltar un índice en SQLite.

Por ejemplo:

DROP INDEX customer_idx;

En este ejemplo, descartamos un índice llamado customer_idx. Debido a que cada nombre de índice debe ser único dentro de la base de datos, no tenemos que especificar el nombre de la tabla en la instrucción DROP INDEX.

renombrar índice

Puede cambiar el nombre de un índice en SQLite quitando primero el índice y luego volviendo a crear el índice con el nuevo nombre.

sintaxis

La sintaxis para cambiar el nombre de un índice en SQLite es:

DROP INDEX [IF EXISTS] index_name;

CREATE [UNIQUE] INDEX [IF NOT EXISTS] new_index_name
  ON table_name 
    (column1 [ASC | DESC],
     column2 [ASC | DESC],
     ...
     column_n  [ASC | DESC])
  [ WHERE conditions ];

index_name El nombre del índice para cambiar el nombre. new_index_name El nuevo nombre del índice.

ejemplo

Veamos un ejemplo de cómo renombrar un índice en SQLite.

Por ejemplo:

DROP INDEX customer_idx;

CREATE INDEX customer_new_index
  ON customers (last_name);

En este ejemplo, cambiamos el nombre del índice llamado customer_idx a customer_new_index.