Re: Alternative to INTERSECT

From: Josh Trutwin <josh(at)trutwins(dot)homeip(dot)net>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Alternative to INTERSECT
Date: 2007-07-31 18:52:22
Message-ID: 20070731135222.394da3dd@sinkhole.intrcomm.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Tue, 31 Jul 2007 17:30:51 +0000
Andreas Joseph Krogh <andreak(at)officenet(dot)no> wrote:

> Hi all. I have the following schema:
>
> CREATE TABLE test (
> id integer NOT NULL,
> field character varying NOT NULL,
> value character varying NOT NULL
> );
>
> ALTER TABLE ONLY test
> ADD CONSTRAINT test_id_key UNIQUE (id, field, value);
>
> CREATE INDEX test_like_idx ON test USING btree (id, field, value
> varchar_pattern_ops);
>
> Using INTERSECT I want to retrieve the rows matching (pseudo-code)
> "firstname LIKE ('andrea%' OR 'jose%') AND lastname LIKE 'kro%'"

Why not:

WHERE (t.field = lastname AND t.value LIKE 'kro%')
OR (t.field = firsname AND (
t.value LIKE 'jose%' OR t.value LIKE 'andrea%')
)

Not tested. If you're having performance problems is probably less
like that the INTERSECT is the problem with all those LIKE's in
there? Is t.value indexed?

Josh

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Jon Horsman 2007-07-31 19:06:10 Re: Connection Limit
Previous Message Andreas Joseph Krogh 2007-07-31 17:30:51 Alternative to INTERSECT