Tema SQL
CREATE INDEX
Crea una estructura auxiliar sobre una o más columnas para acelerar búsquedas, joins y ordenaciones a costa de espacio y mantenimiento en INSERT/UPDATE/DELETE.
Descripción
Los índices no cambian el resultado lógico de las consultas salvo hints de cobertura; cambian el plan y el coste. Un índice compuesto (col1, col2) ayuda a condiciones que filtren por prefijo de esas columnas en orden. Los índices únicos también fuerzan unicidad. Índices parciales (WHERE en la definición) y tipos GIN/GiST/etc. son extensiones por motor. Evita duplicar índices redundantes y mide impacto en escrituras calientes.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
CREATE [ UNIQUE ] INDEX nombre_indice
ON tabla (columna1 [, columna2 ...]);
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- INDEX
- Nombre del objeto índice y columnas clave; opcionalmente INCLUDE o COVERING en SQL Server para columnas no clave.
- UNIQUE
- Garantiza que no existan dos filas con la misma combinación de valores en las columnas indexadas (tratamiento de NULL según motor).
Ejemplos
Ejemplo 1
CREATE INDEX idx_pedidos_cliente
ON pedidos (cliente_id);
Ejemplo 2
DROP INDEX IF EXISTS idx_demo;
-- crear índice según motor
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.