Consultas guardadas como tablas virtuales y aceleración de búsquedas.
0 / 6 retos resueltos📘 Clase 10 · creación de vistas (ejercicios 1–5) e índices
Al terminar esta práctica podrás…
Crear vistas simples, filtradas, agregadas, con JOIN y con columnas calculadas.
Usar una vista como si fuera una tabla, reemplazarla y eliminarla.
Entender qué es un índice y comprobar su efecto con EXPLAIN QUERY PLAN.
Usar índices únicos como restricción.
Una vista (VIEW) es una consulta guardada con nombre. No almacena datos: cada vez
que la consultas, ejecuta su SELECT sobre las tablas base, así que siempre está al día. Sirve para:
Simplificar: un JOIN de cuatro tablas queda reducido a SELECT * FROM detalle_empleados.
Seguridad: exponer solo algunas columnas (por ejemplo, sin el salario).
Consistencia: todos usan la misma definición de un indicador.
Un índice es una estructura auxiliar (como el índice de un libro) que permite encontrar filas sin recorrer la
tabla completa. Acelera los WHERE, JOIN y ORDER BY sobre la columna indexada, pero
ocupa espacio y hace un poco más lentos los INSERT y UPDATE. Las claves primarias y las columnas UNIQUE ya tienen uno.
Sintaxis
CREATE VIEW nombre AS SELECT …;
DROP VIEW IF EXISTS nombre;
CREATE [UNIQUE] INDEX idx_nombre ON tabla (columna);
EXPLAIN QUERY PLAN SELECT …;
CREATE VIEW
Guarda un SELECT con nombre; se consulta como una tabla.
Vista siempre actual
Si cambian las tablas base, la vista lo refleja de inmediato.
Reemplazar
SQLite: DROP + CREATE. MySQL/Oracle: CREATE OR REPLACE VIEW.
CREATE INDEX
Acelera búsquedas por una columna.
UNIQUE INDEX
Además impide valores repetidos.
EXPLAIN QUERY PLAN
Muestra si se recorre la tabla (SCAN) o se usa un índice (SEARCH).
MySQL / Oracle
CREATE OR REPLACE VIEW v AS SELECT …
SQLite
DROP VIEW IF EXISTS v; CREATE VIEW v AS SELECT …
Plan de ejecución
MySQL: EXPLAIN SELECT… · Oracle: EXPLAIN PLAN FOR SELECT…
1 · Ejemplos guiados · ejecuta y modifica cada bloque
01Vista simple
Los empleados de TI quedan encapsulados en una vista.
sql-vistas-indices.sql
Presiona «ejecutar» para ver el resultado.
02Vista con JOIN
Un JOIN de cuatro tablas se consulta luego como una tabla simple.
sql-vistas-indices.sql
Presiona «ejecutar» para ver el resultado.
03Vista agregada
Un resumen por departamento (clase 10, ejercicio 3: vista con función agregada).
sql-vistas-indices.sql
Presiona «ejecutar» para ver el resultado.
04La vista siempre está al día
Actualizamos la tabla base y la vista refleja el cambio sin hacer nada más.
sql-vistas-indices.sql
Presiona «ejecutar» para ver el resultado.
05Índice y plan de ejecución
Sin índice, buscar por apellido recorre toda la tabla (SCAN). Con el índice, el plan pasa a SEARCH … USING INDEX. Ejecuta solo el EXPLAIN antes de crear el índice para comparar.
sql-vistas-indices.sql
Presiona «ejecutar» para ver el resultado.
06Índice único como restricción
Un índice UNIQUE impide nombres de departamento repetidos. El INSERT siguiente falla: error esperado.
sql-vistas-indices.sql
Presiona «ejecutar» para ver el resultado.
⚠ Errores frecuentes
Pensar que la vista guarda una copia de los datos: guarda la consulta; los datos se leen al consultarla.
Crear dos veces la misma vista: «already exists». Usa DROP VIEW IF EXISTS antes, o CREATE OR REPLACE en MySQL/Oracle.
Indexar todas las columnas: cada índice ocupa espacio y ralentiza las escrituras. Indexa las que se filtran o unen con frecuencia.
Usar funciones sobre la columna indexada en el WHERE (WHERE UPPER(last_name) = …): el índice normal no se aprovecha.
2 · Retos con corrección automática
Escribe tu solución y pulsa comprobar (Ctrl + Enter). Tu consulta y la solución se ejecutan
en bases limpias y se comparan los resultados: no importan los nombres de las columnas, sí los datos (y el
orden, cuando el reto lo pide). Si te atascas, usa la pista o mira el resultado esperado.
3 · Preguntas tipo solemne
1. ¿Qué almacena una vista?
La vista guarda el SELECT; los datos se leen de las tablas base al consultarla.
2. ¿Cuál instrucción crea una vista con los productos con stock mayor que 0 (clase 10)?
La sintaxis es CREATE VIEW nombre AS seguido de un SELECT completo.
3. En el plan de ejecución, ¿qué indica SCAN employees?
SCAN = recorrido completo. SEARCH … USING INDEX = búsqueda con índice.