[Pgsql-ayuda] Aligerar consulta

Gunnar Wolf gwolf@gwolf.cx
Fri, 09 Jan 2004 17:56:23 -0600


Hola,

Me aventé esta consultita, que sencillamente me da asco, y espero que
alguno de ustedes me pueda sugerir cómo mejorar:

SELECT campos FROM tabla
WHERE now()::date BETWEEN initial_date AND final_date OR
                  (now()::date > initial_date AND final_date IS NULL) OR
                  (initial_date IS NULL AND final_date < now()::date) OR
                  (initial_date IS NULL AND final_date IS NULL)

Tengo varias quejas ante mi query... Primero que nada, hay una
cantidad espantosa de comparaciones buscando NULLs que pueden darnos
dolores de cabeza de uno y de otro lado. Por otro lado, evalúo
now()::date en tres ocasiones, lo cual no es precisamente
eficiente. ¿Alguien tiene una sugerencia para desafearla? 

Saludos,

-- 
Gunnar Wolf - gwolf@gwolf.cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF