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.

La visión global de lo que SQL Avanzado te permite hacer
MoverUPDATE / DELETE / UPSERT avanzadosMantener correctoRestricciones / FKs / tiposOrganizarNormalización / vistas / diseñoLeer el planEXPLAIN / stats / joinsAcelerarDiseño de índicesprotegerorganizarmedirmejorar
Mueve datos con DML avanzado, mantenlos correctos con restricciones, claves foráneas y tipos, organiza el esquema con diseño, y acelera las consultas con planes de ejecución e índices.

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.

Los 11 artículos sobre escritura avanzada, restricciones, tipos y diseño
Escritura avanzadaMoverUPDATE / DELETEaplicacionesUPSERTON CONFLICTRestricciones / tiposMantener correctoRestricciones / FKscambios de restricciónAfinidad de tipoSTRICT / fechasDiseñoOrganizarNormalización1NF a 3NFVistaspráctica de diseño
Mueve datos con escritura avanzada, protege su corrección con restricciones, claves foráneas y tipos, y organiza el esquema con normalización, vistas y práctica de diseño.
CategoríaArtículoQué aprendes
Escritura avanzadaUPDATE / DELETE con subconsultas y JOINActualizaciones correlacionadas, UPDATE … FROM, DELETE con condiciones de subconsulta
Escritura avanzadaUPSERT (ON CONFLICT) y aplicaciones de INSERT masivoINSERT … ON CONFLICT DO UPDATE, excluded, INSERT masivo
RestriccionesRestricciones de columna — NOT NULL / UNIQUE / CHECK / PRIMARY KEYNOT NULL / UNIQUE / CHECK / PRIMARY KEY y violaciones
Claves foráneasRestricciones de clave foránea y acciones referencialesREFERENCES, ON DELETE / UPDATE, foreign_keys=ON
Cambios de restricciónAñadir/cambiar restricciones y redefinición de tablasRetroadaptar restricciones, el procedimiento de reconstrucción de tablas
TiposCadenas, números, booleanos y conversión implícita de tiposAfinidad de tipo, conversión implícita, frente a tipos estrictos
TiposTipos de fecha/hora y tablas STRICTAlmacenar y comparar fecha/hora, tablas STRICT
DiseñoDiseño de tablas y normalización1NF a 3NF, eliminar columnas repetidas, esquema de 3 capas
DiseñoVistas (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íaArtículoQué aprendes
Plan de ejecuciónLeer planes de ejecuciónVocabulario: SCAN / SEARCH / USE TEMP B-TREE y más
EstadísticasEstadísticas y el optimizadorANALYZE, sqlite_stat1, selectividad y cambios de plan
UnionesAlgoritmos de unión y orden de uniónBucles 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
ÍndicesDiseño de índicesOrden de columnas en compuestos, prefijo izquierdo, condiciones que usan el índice
ÍndicesIndex-Only ScanIndex-only scan, USING COVERING INDEX
ÍndicesIndexar ORDER BY / GROUP BYEvitar USE TEMP B-TREE, indexar ordenaciones y agrupaciones
ÍndicesCuando los índices no entran en juegoFunciones sobre columnas, casts implícitos, LIKE, OR, y soluciones con índices de expresión/parciales
ReescriturasReescrituras de consultas ① IN / EXISTS y descorrelaciónIN frente a EXISTS, eliminar la correlación, semi-unión / anti-unión
ReescriturasReescrituras de consultas ② eliminar trabajo repetido, ejemplos prácticosEliminar 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.