From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Arturo <arturomunive(at)gmail(dot)com> |
Cc: | Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [GENERAL] Indice en Date |
Date: | 2007-05-02 01:25:36 |
Message-ID: | 20070502012536.GH5867@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda pgsql-general |
Arturo escribió:
> Alvaro Herrera escribió:
> >Arturo escribió:
> >
> >
> >>ahhhh eso es obvio... de todas formas mi duda era saber por que cuando
> >>ponia
> >>WHERE
> >>fecha < '11-Jan-2007'::date
> >>
> >>no usaba el indice
> >>
> >>y cuando ponia
> >>WHERE
> >>fecha::date < '11-Jan-2007'::date
> >>
> >>si lo hacía
> >>
> >>en ambos casos con igual numero de filas
> >>
> >
> >Es "fecha" una columna de tipo date, o es de otro tipo?
> >
> >
> si la columna es date asi esta declarada por me sorprendo por lo del indice
Por favor muestra tambien un \d de la tabla, que incluya todos los
indices que hay en ella.
Algo que puede estar pasando es que la columna de la izquierda sea
automaticamente cambiada de tipo por un cast implicito, y que se
seleccione un operador distinto. Por ej. que este haciendo
implicitamente esto:
WHERE
fecha::timestamp with time zone < '11-Jan-2007'::date
Creo que puede hacerlo porque existe un cast marcado "implicito" que
convierte date en timestamp with time zone, y ademas existe un operador
<(timestamp with time zone, date)
No acaba de quedarme claro _por que_ lo haria; quizas el indice tiene
alguna peculiaridad.
alvherre=# select format_type(castsource, -1), format_type(casttarget, -1), castcontext from pg_cast where castsource = 'date'::regtype;
format_type | format_type | castcontext
-------------+-----------------------------+-------------
date | timestamp without time zone | i
date | timestamp with time zone | i
date | text | i
date | character varying | a
date | bpchar | a
(5 rows)
alvherre=# select format_type(oprleft, -1), format_type(oprright, -1) from pg_operator where oprname = '<' and (oprleft='date'::regtype or oprright = 'date'::regtype);
format_type | format_type
-----------------------------+-----------------------------
date | date
date | timestamp without time zone
date | timestamp with time zone
timestamp without time zone | date
timestamp with time zone | date
(5 rows)
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Patricia Lopez Ravenau | 2007-05-02 12:52:09 | Re: mapa de base de datos |
Previous Message | Alvaro Herrera | 2007-05-02 01:13:50 | Re: [GENERAL] Indice en Date |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Smith | 2007-05-02 01:52:16 | Re: Feature Request --- was: PostgreSQL Performance Tuning |
Previous Message | Alvaro Herrera | 2007-05-02 01:13:50 | Re: [GENERAL] Indice en Date |