Prolem wiht long query?

Jérome Knöbl <jknobl@mandanet.ch>

From: Jérome Knöbl <jknobl@mandanet.ch>
To: pgsql-sql@hub.org
Date: 1999-07-14T14:31:09Z
Lists: pgsql-sql
Hi,

I have some trouble with a very long query.

This Query run well :
----------------

select *
    from
        adresses, liaison_adresse_rubrique as lar0,
        liaison_adresse_rubrique as lar1,
        liaison_adresse_rubrique as lar2
    where
        lar0.refadresse=adresses.ref
    and lar0.refrubrique=73
    and lar1.refadresse=adresses.ref
    and lar1.refrubrique=151
    and lar2.refadresse=adresses.ref
    and lar2.refrubrique=170

This Query take a lot of time :
-----------------------

select *
    from
        adresses, liaison_adresse_rubrique as lar0,
        liaison_adresse_rubrique as lar1,
        liaison_adresse_rubrique as lar2,
        liaison_adresse_rubrique as lar3,
        liaison_adresse_rubrique as lar4
    where
        lar0.refadresse=adresses.ref
    and lar0.refrubrique=73
    and lar1.refadresse=adresses.ref
    and lar1.refrubrique=150
    and lar2.refadresse=adresses.ref
    and lar2.refrubrique=160
    and lar3.refadresse=adresses.ref
    and lar3.refrubrique=151
    and lar4.refadresse=adresses.ref
    and lar4.refrubrique=170

This Query never finish, and take all my memory (and I have 384Mb)
---------------------------------------------------
select *
    from
        adresses, liaison_adresse_rubrique as lar0,
        liaison_adresse_rubrique as lar1,
        liaison_adresse_rubrique as lar2,
        liaison_adresse_rubrique as lar3,
        liaison_adresse_rubrique as lar4,
        liaison_adresse_rubrique as lar5,
        liaison_adresse_rubrique as lar6
    where
        lar0.refadresse=adresses.ref
    and lar0.refrubrique=73
    and lar1.refadresse=adresses.ref
    and lar1.refrubrique=148
    and lar2.refadresse=adresses.ref
    and lar2.refrubrique=153
    and lar3.refadresse=adresses.ref
    and lar3.refrubrique=150
    and lar4.refadresse=adresses.ref
    and lar4.refrubrique=160
    and lar5.refadresse=adresses.ref
    and lar5.refrubrique=151
    and lar6.refadresse=adresses.ref
    and lar6.refrubrique=170



Every think is index using hash table.

Is it a limitation of pg?

Do you know another method to do that?

Is it exist an intersect operator in pg (like in oracle)?

Jérome knobl, Lausanne, Switzerland