Wednesday, June 25, 2008

[pgsql-es-ayuda] Obtener el más cercano

Hola, parece que los mails que he enviado no han llegado, no lo he
visto en los archivos, así que pregunto de nuevo.

Tengo una tabla como esta:

CREATE TABLE t (x double precision primary key, ...);

y quiero obtener el elemento cuyo valor sea más cercano a un valor dado
x0. Lo que se me ocurre por el momento es:

SELECT * FROM t ORDER BY abs(x - x0) LIMIT 1;

Pero me tinca que podría estar calculando la función abs para todos los
registros de la tabla, lo que no aprovecharía el índice B-Tree en la
columna x.

¿Se les ocurre una idea mejor?

--
Daniel Hernández
http://www.scio.cl
--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

No comments: