OK, that did it.  Time is now 315 ms.  I am so exited working with
postgres.  I really apologize for the format, my first time posting on the
list.  That does not justify it though.  Really thanks.

On Fri, Jan 28, 2011 at 1:19 PM, Andres Freund <and...@anarazel.de> wrote:

> On Friday, January 28, 2011 06:30:19 PM yazan suleiman wrote:
> > I am evaluating postgres 9 to migrate away from Oracle.  The following
> > query runs too slow, also please find the explain plan:
> First:
>
> explain analyze
> SELECT DISTINCT
>     EVENT.ID
>    ,ORIGIN.ID AS ORIGINID
>    ,EVENT.PREFERRED_ORIGIN_ID AS PREFERRED_ORIGIN
>    ,EVENT.CONTRIBUTOR
>    ,ORIGIN.TIME
>    ,ORIGIN.LATITUDE
>    ,ORIGIN.LONGITUDE
>    ,ORIGIN.DEPTH
>    ,ORIGIN.EVTYPE
>    ,ORIGIN.CATALOG
>    ,ORIGIN.AUTHOR OAUTHOR
>    ,ORIGIN.CONTRIBUTOR OCONTRIBUTOR
>    ,MAGNITUDE.ID AS MAGID
>    ,MAGNITUDE.MAGNITUDE
>    ,MAGNITUDE.TYPE AS MAGTYPE
> FROM
>     event.event
>    left join event.origin on event.id = origin.eventid
>    left join event.magnitude on origin.id = event.magnitude.origin_id
> WHERE
>    EXISTS(
>        select origin_id
>        from event.magnitude
>        where magnitude.magnitude >= 7.2 and origin.id = origin_id
>    )
> order by
>    ORIGIN.TIME desc
>    ,MAGNITUDE.MAGNITUDE desc
>    ,EVENT.ID
>    ,EVENT.PREFERRED_ORIGIN_ID
>    ,ORIGIN.ID
>
> I am honestly stumped if anybody can figure something sensible out of the
> original formatting of the query...
>
> What happens if you change the
>     left join event.origin on event.id = origin.eventid
> into
>     join event.origin on event.id = origin.eventid
> ?
>
> The EXISTS() requires that origin is not null anyway. (Not sure why the
> planner doesn't recognize that though).
>
> Andres
>

Reply via email to