Mi consulta tarda 30 segundos, ¿por dónde empiezo a investigar?
Vicky_2011
Nivel 3 ·
Vicky_2011
Nivel 3 ·
Martín B.
Nivel 2 ·
Primero, EXPLAIN (o EXPLAIN ANALYZE) para ver qué plan usa. Sin eso es adivinar.
Damián R.
Nivel 3 ·
Lo más probable: YEAR(fecha) envuelve la columna en una función y entonces el índice sobre fecha no se puede usar. Reescribilo como rango: WHERE fecha >= '2023-01-01' AND fecha < '2024-01-01'
Yuliana S.
Nivel 1 ·
Además, un índice compuesto (cuenta_id, fecha) probablemente sea mucho mejor que dos índices separados para este filtro.
Jazmín C.
Nivel 3 ·
Y evitá el SELECT * si no necesitás todas las columnas, sobre todo si hay columnas pesadas de texto.
Vicky_2011
Nivel 3 ·
Pasé el YEAR() a rango y bajó de 30 segundos a menos de 1. No lo podía creer. Ahora pruebo el compuesto.
antonella F.
Nivel 2 ·
Ese patrón (función sobre columna indexada) es el error de rendimiento número uno que veo en code reviews.
Stiven
Nivel 2 ·
Algunos motores permiten índices sobre expresiones, pero el rango es más limpio y portable.