Índices covering en SQL
Cuando el índice ya contiene cada columna que la consulta quiere, la tabla ni se toca.
CREATE INDEX orders_cover
ON orders (status, customer_id, total);
EXPLAIN QUERY PLAN
SELECT
customer_id,
SUM(total) AS revenue
FROM orders
WHERE status = 'paid'
GROUP BY customer_id;
Cómo funciona
- Un índice covering convierte dos búsquedas en una.
- El plan dice
USING COVERING INDEXcuando esto ocurre. - Cuesta almacenamiento: las columnas se guardan dos veces.
Palabras clave y builtins usados aquí
ASBYCREATEEXPLAINFROMGROUPINDEXONSELECTSUMWHERE
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 183
- Tokens
- 35
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 23 segundos.
Paso 5 de 5 en Índices; paso 7 de 17 en Planes y rendimiento.