Repaso de SQL Avanzado — Restricciones, diseño y tuning de un vistazo
Un repaso de la serie de SQL Avanzado. Cruza UPDATE/DELETE avanzados y UPSERT, restricciones y claves foráneas, afinidad de tipo y STRICT, normalización y vistas, y diseño de índices y tuning partiendo de EXPLAIN QUERY PLAN — con diagramas y un índice de artículos.
La visión global de lo que aprendiste en SQL Avanzado
Esta página reúne la serie de SQL Avanzado en una sola página, vista a través de tres lentes: restricciones y diseño que mantienen los datos a salvo, un esquema legible y correcto e índices y tuning para consultas rápidas.
Tras coger la sintaxis en Fundamentos y la agregación, los JOIN y las funciones de ventana en la serie Intermedio, Avanzado trató de mantener los datos correctos y hacer que se ejecuten rápido — diseño y tuning.
Usa los enlaces a cualquier artículo para volver a repasarlo cuando quieras.
Mantener los datos correctos — escritura avanzada, restricciones, claves foráneas, tipos, diseño
Vimos UPDATE / DELETE avanzados y UPSERT con subconsultas y JOIN, restricciones de columna y claves foráneas, afinidad de tipo y STRICT, y de ahí a normalización, vistas y práctica de diseño.
El diagrama de abajo agrupa el DML avanzado y las restricciones/tipos juntos, y el diseño/vistas juntos.
| Categoría | Artículo | Qué aprendes |
|---|---|---|
| Escritura avanzada | UPDATE / DELETE con subconsultas y JOIN | Actualizaciones correlacionadas, UPDATE … FROM, DELETE con condiciones de subconsulta |
| Escritura avanzada | UPSERT (ON CONFLICT) y aplicaciones de INSERT masivo | INSERT … ON CONFLICT DO UPDATE, excluded, INSERT masivo |
| Restricciones | Restricciones de columna — NOT NULL / UNIQUE / CHECK / PRIMARY KEY | NOT NULL / UNIQUE / CHECK / PRIMARY KEY y violaciones |
| Claves foráneas | Restricciones de clave foránea y acciones referenciales | REFERENCES, ON DELETE / UPDATE, foreign_keys=ON |
| Cambios de restricción | Añadir/cambiar restricciones y redefinición de tablas | Retroadaptar restricciones, el procedimiento de reconstrucción de tablas |
| Tipos | Cadenas, números, booleanos y conversión implícita de tipos | Afinidad de tipo, conversión implícita, frente a tipos estrictos |
| Tipos | Tipos de fecha/hora y tablas STRICT | Almacenar y comparar fecha/hora, tablas STRICT |
| Diseño | Diseño de tablas y normalización | 1NF a 3NF, eliminar columnas repetidas, esquema de 3 capas |
| Diseño | Vistas (VIEW) | CREATE VIEW, usar vistas, vistas actualizables |
Hacer las consultas rápidas — planes de ejecución, índices, tuning
Lee los planes con EXPLAIN QUERY PLAN, entiende las estadísticas, el optimizador y los algoritmos de unión, hazte con el diseño de índices, los index-only scans, la indexación para ordenaciones y agrupaciones, y los patrones donde los índices no entran en juego, y termina con las reescrituras de consultas.
La tabla de abajo organiza cada artículo.
| Categoría | Artículo | Qué aprendes |
|---|---|---|
| Plan de ejecución | Leer planes de ejecución | Vocabulario: SCAN / SEARCH / USE TEMP B-TREE y más |
| Estadísticas | Estadísticas y el optimizador | ANALYZE, sqlite_stat1, selectividad y cambios de plan |
| Uniones | Algoritmos de unión y orden de unión | Bucles anidados, orden de unión, índices automáticos |
| Índices | Índices — Compuesto, Parcial, de Expresión, UNIQUE | Índices compuestos, parciales, de expresión y UNIQUE con EXPLAIN |
| Índices | Diseño de índices | Orden de columnas en compuestos, prefijo izquierdo, condiciones que usan el índice |
| Índices | Index-Only Scan | Index-only scan, USING COVERING INDEX |
| Índices | Indexar ORDER BY / GROUP BY | Evitar USE TEMP B-TREE, indexar ordenaciones y agrupaciones |
| Índices | Cuando los índices no entran en juego | Funciones sobre columnas, casts implícitos, LIKE, OR, y soluciones con índices de expresión/parciales |
| Reescrituras | Reescrituras de consultas ① IN / EXISTS y descorrelación | IN frente a EXISTS, eliminar la correlación, semi-unión / anti-unión |
| Reescrituras | Reescrituras de consultas ② eliminar trabajo repetido, ejemplos prácticos | Eliminar trabajo repetido, optimización de subconsultas con ejemplos |
¡Buen trabajo!
A estas alturas has reunido UPDATE / DELETE y UPSERT avanzados, el lado del diseño con restricciones, claves foráneas, tipos, normalización y vistas, y el lado del tuning con el diseño de índices y más, partiendo de EXPLAIN QUERY PLAN.
Esto también marca el final de las tres etapas del curso de SQL — Fundamentos, Intermedio y Avanzado.
Gran trabajo llegando hasta el final.
Vuelve a cualquier artículo que te haya llamado la atención y sigue experimentando con tus propios datos.