Planes y rendimiento
17 pasos en 5 series de SQL.
Leer EXPLAIN, que es la diferencia entre adivinar y saber. Luego índices, incluidos los compuestos, los parciales y los de cobertura, y después reescribir consultas para que el planificador pueda usarlos.
Las transacciones lo cierran. Diecisiete pasos, y la lección recurrente es que una consulta es rápida porque el planificador encontró un índice, no porque se veía ordenada.
Leer un plan
- Leer un plan de consultaEl plan es el motor contándote qué está por hacer. Léelo antes de adivinar.
- Darle estadísticas al planificadorEl planificador adivina conteos de filas. ANALYZE cambia la adivinanza por una medición.
Índices
- ÍndicesUn índice cambia velocidad de escritura y disco por búsquedas rápidas en una columna.
- Índices compuestos y orden de columnasUn índice de dos columnas es una sola lista ordenada: solo la columna inicial se puede buscar.
- Índices parcialesSi la consulta siempre filtra igual, el índice no necesita las demás filas.
- Indexar una expresiónNo puedes indexar una columna y luego buscar una función de ella. Indexa la función.
- Índices coveringCuando el índice ya contiene cada columna que la consulta quiere, la tabla ni se toca.
Hacerla más rápida
- Predicados que un índice puede usarEnvuelve una columna en una función y el índice deja de ser un índice.
- EXISTS, IN y la trampa del NULLLas dos se leen igual hasta que la subconsulta devuelve un NULL, y entonces discrepan.
- Una consulta, tres planesLa misma pregunta hecha de tres formas, con el plan tras cada una — la diferencia es la lección.
Transacciones
- TransaccionesUna transacción hace que varias sentencias aterricen juntas o no aterricen.
- SavepointsUn savepoint es una transacción dentro de otra, así un paso puede fallar solo.
- UpsertINSERT ON CONFLICT escribe una fila o actualiza la que ya estaba.
- Cómo una escritura maneja un conflictoIgnorarlo, reemplazar la fila, o actualizar las partes que querías actualizar.
- Pragmas de conexiónUn puñado de pragmas decide cómo una conexión de SQLite cambia seguridad por velocidad.
Bis
- index_review.sqlPreguntarle a la base qué índices tiene, cuáles usa y cuáles solo está pagando.
- slow_query_clinic.sqlUn reporte escrito de tres formas: subconsulta correlacionada, join y función de ventana.