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
- Una columna sola a un lado deja al motor saltar directo; una función, no.
- Reescribe una función de fecha como un rango semiabierto sobre la columna cruda.
LIKE 'abc%'necesita un índiceNOCASEpara saltar;LIKE '%abc'no puede nunca.
Palabras clave y builtins usados aquí
ANDCOLLATECOUNTCREATEFROMINDEXLIKEONSELECTWHERE
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.
Paso 1 de 3 en Hacerla más rápida; paso 8 de 17 en Planes y rendimiento.