CREATE INDEX en SQL
CREATE INDEX crea una estructura que acelera búsquedas y ordenaciones. Mejora lecturas, aunque consume espacio y añade trabajo a escrituras.
Esta lección trata DDL (definición de datos): cambiar la estructura de bases, tablas, índices o vistas. En producción, estas operaciones requieren permisos elevados y planificación.
Practica primero en entornos de prueba. Un DROP mal ejecutado puede ser irreversible sin copia de seguridad.
Esta lección trata DDL (definición de datos): cambiar la estructura de bases, tablas, índices o vistas. En producción, estas operaciones requieren permisos elevados y planificación.
Practica primero en entornos de prueba. Un DROP mal ejecutado puede ser irreversible sin copia de seguridad.
Sintaxis CREATE INDEX
La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.
Plantillas
CREATE INDEX nombre_indice ON tabla (columna);
CREATE UNIQUE INDEX nombre_indice ON tabla (columna1, columna2);
Índice para buscar clientes por ciudad
Madrid
CREATE INDEX idx_clientes_ciudad ON Clientes(Ciudad);
SELECT Nombre_Cliente, Ciudad FROM Clientes WHERE Ciudad = 'Madrid' ORDER BY Nombre_Cliente;
| Nombre_Cliente | Ciudad |
|---|---|
| Ana García | Madrid |
| Carlos Ruiz | Madrid |
Índice para filtrar precios
Productos de más de 10
CREATE INDEX idx_productos_precio ON Productos(Precio);
SELECT Nombre_Producto, Precio FROM Productos WHERE Precio > 10 ORDER BY Precio DESC;
| Nombre_Producto | Precio |
|---|---|
| Jamón serrano | 22.00 |
| Salmón fresco | 18.50 |
| Queso manchego | 15.00 |
| … 1 producto más | |
Índice único compuesto
Un
UNIQUE INDEX
compuesto exige que la combinación
de columnas no se repita. Creamos la tabla
Oficinas
(cada par país+ciudad es único):
País y ciudad sin duplicar
CREATE TABLE Oficinas (
ID INTEGER PRIMARY KEY,
Pais TEXT NOT NULL,
Ciudad TEXT NOT NULL
);
CREATE UNIQUE INDEX idx_oficinas_pais_ciudad ON Oficinas(Pais, Ciudad);
INSERT INTO Oficinas (ID, Pais, Ciudad) VALUES
(1, 'España', 'Madrid'),
(2, 'España', 'Barcelona'),
(3, 'Francia', 'París');
SELECT Pais, Ciudad FROM Oficinas ORDER BY Pais, Ciudad;
| Pais | Ciudad |
|---|---|
| España | Barcelona |
| España | Madrid |
| Francia | París |
Tablas demo
Base de datos de demostración: Clientes
Estas filas son las mismas en la mayoría de ejemplos del tutorial. Referencia esta tabla cuando adaptes las consultas a tus propios datos.
| ID_Cliente | Nombre_Cliente | Ciudad | Pais | N_Ventas |
|---|---|---|---|---|
| 1 | Ana García | Madrid | España | 120 |
| 2 | Luis Pérez | Barcelona | España | 85 |
| 3 | María López | Valencia | España | 200 |
| 4 | Carlos Ruiz | Madrid | España | 45 |
| 5 | Elena Torres | Sevilla | España | 67 |
| 6 | John Smith | London | UK | 150 |
| 7 | Marie Dubois | Paris | Francia | 92 |
| 8 | Hans Müller | Berlin | Alemania | 78 |
| 9 | Luca Rossi | Roma | Italia | 110 |
| 10 | Sofia Anders | Stockholm | Suecia | 55 |
Base de datos de demostración: Productos
| ID_Producto | Nombre_Producto | Precio | Stock |
|---|---|---|---|
| 1 | Café expreso | 12.50 | 120 |
| 2 | Té verde | 8.00 | 200 |
| 3 | Salsa de tomate | 3.20 | 340 |
| 4 | Galletas de avena | 4.50 | 180 |
| 5 | Queso manchego | 15.00 | 90 |
| 6 | Arroz integral | 2.80 | 500 |
| 7 | Jamón serrano | 22.00 | 60 |
| 8 | Manzanas Golden | 1.90 | 400 |
| 9 | Salmón fresco | 18.50 | 45 |
| 10 | Aceite de oliva | 9.90 | 150 |
Resumen CREATE INDEX
- Acelera consultas sobre columnas frecuentes.
- Un índice compuesto sigue el orden de sus columnas.
UNIQUE INDEXtambién impide duplicados.
Cómo practicar en el editor
1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.