typestar

Predicados que un índice puede usar en SQL

Envuelve una columna en una función y el índice deja de ser un índice.

CREATE INDEX orders_by_date
    ON orders (placed_at);

-- la función esconde la columna, así que el índice no puede ayudar
SELECT COUNT(*)
FROM orders
WHERE STRFTIME('%Y', placed_at) = '2026';

SELECT COUNT(*)
FROM orders
WHERE placed_at >= '2026-01-01'
    AND placed_at < '2027-01-01';

-- LIKE ignora mayúsculas, así que solo un índice NOCASE coincide
CREATE INDEX products_sku_nocase
    ON products (sku COLLATE NOCASE);

SELECT id
FROM products
WHERE sku LIKE 'TS-%';

Cómo funciona

  1. Una columna sola a un lado deja al motor saltar directo; una función, no.
  2. Reescribe una función de fecha como un rango semiabierto sobre la columna cruda.
  3. LIKE 'abc%' necesita un índice NOCASE para saltar; LIKE '%abc' no puede nunca.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
462
Tokens
65
Ritmo de tres estrellas
95 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →