From: | Arturo <arturomunive(at)gmail(dot)com> |
---|---|
To: | Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [GENERAL] Indice en Date |
Date: | 2007-05-01 17:39:33 |
Message-ID: | 46377B55.3040408@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda pgsql-general |
Jaime Casanova escribió:
> te estoy redirigiendo a una lista en español, la lista a la que
> enviaste este mensaje es en ingles y debes escribir en ingles al
> mandar mensajes ahi...
>
> On 4/27/07, Arturo Munive <arturomunive(at)gmail(dot)com> wrote:
>>
>> tengo un indice sobre una columna date.
>>
>> cuando hago una consulta ...
>> Select
>> id
>> from
>> ventas
>> WHERE
>> fecha = date('12-JAN-2007')
>>
>> el planificador usa el indice
>>
>> pero cuando la restriccion es WHERE fecha < date('12-JAN-2007')
>>
>> se efectua un barrido secuencial.
>>
>> ni e indice ni la tabla ni la consulta son nada complejos
>>
>> que me olvido o que debo hacer para que se utilize el indice cuando
>> uso el
>> operador menor
>>
>
> los indices no son siempre la mejor alternativa... puedes ejecutar la
> sentencia con un EXPLAIN ANALYZE al inicio? y mostrarnos el resultado?
>
> EXPLAIN ANALYZE
> Select id from ventas
> WHERE fecha = date('12-JAN-2007')
>
> tambien seria bueno saber cuantos registros tiene la tabla, y cuantos
> regresa ese select.
>
> lo mas probable es que el planificador este esperando que el select
> con < regrese casi todo el contenido de la tabla y por eso prefiere
> leerla toda. tambien seria interesante saber que version de postgres
> estas usando
>
Hola gracias por redirigirme paropiadamente, la verda nunca habia
posteado en listas de este sitio
por eso me confindí :)
Buno el problema que tenía lo resolví, pero no se si es la manera correcta.
SELECT
id
FROM
ventas
WHERE
fecha < date('12-JAN-2007')
No usa el índice, pero cuando la consulta es
SELECT
id
FROM
ventas
WHERE
fecha::date < date('12-JAN-2007')
usa el índice como esperaba....
lo raro de todo esto es que la columna fecha está definida del tipo date
Ahora no pongo el EXPLAIN ANALYZE debido a que estoy en otra computadora
donde no tengo acceso a la base de datos en la que estoy trabajando
(es el dia del trabajador aqui en Arequipa-Perú)
Bueno de todas formas gracias por la ayuda....
en todo caso es normal este cast a date dado que la columna de por si ya
es date
inlcuso si hago
SELECT
id
FROM
ventas
WHERE
fecha::date < '12-JAN-2007'::date
tambien funciona, con el índice , solo no funciona cuando no hago el
cast sobre la columna fecha
Saludos
From | Date | Subject | |
---|---|---|---|
Next Message | Sandro Martínez | 2007-05-01 18:20:40 | sobre setArray en JDBC |
Previous Message | Leonardo Garcia | 2007-05-01 01:38:59 | Re: Disparar periodicamente una funcion |
From | Date | Subject | |
---|---|---|---|
Next Message | Rich Shepard | 2007-05-01 17:41:44 | CHECK() Constraint on Column Using Lookup Table |
Previous Message | Brad Nicholson | 2007-05-01 17:20:37 | Dynamically Allocated System Resources |