typestar

Una consulta, tres planes en SQL

La misma pregunta hecha de tres formas, con el plan tras cada una — la diferencia es la lección.

-- 1. sin índice: el motor lee cada pedido y luego ordena
EXPLAIN QUERY PLAN
SELECT
    id,
    total
FROM orders
WHERE customer_id = 7
ORDER BY placed_at DESC;

-- 2. índice solo del filtro: busca, pero el ordenamiento sigue temporal
CREATE INDEX tune_customer
    ON orders (customer_id);

EXPLAIN QUERY PLAN
SELECT
    id,
    total
FROM orders
WHERE customer_id = 7
ORDER BY placed_at DESC;

-- 3. filtro más clave de orden: el índice resuelve ambas mitades
DROP INDEX tune_customer;

CREATE INDEX tune_customer_date
    ON orders (customer_id, placed_at DESC);

EXPLAIN QUERY PLAN
SELECT
    id,
    total
FROM orders
WHERE customer_id = 7
ORDER BY placed_at DESC;

Cómo funciona

  1. Parte de la versión lenta y lee qué hace el planificador con ella.
  2. El índice cambia el plan de un scan a un search; comprueba que así fue.
  3. Mide el plan, no tu intuición sobre el plan.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
34
Caracteres a escribir
637
Tokens
82
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 52 segundos.

Escribe este fragmento

Paso 3 de 3 en Hacerla más rápida; paso 10 de 17 en Planes y rendimiento.

← Anterior Siguiente →