From: | David C Hartwig Jr <daybee(at)bellatlantic(dot)net> |
---|---|
To: | Michael McCarthy <michael(at)tcsi(dot)com> |
Cc: | pgsql-sql(at)postgreSQL(dot)org, Hemant Yevale <hemant(at)tcsi(dot)com>, Savyasachi Jog <jog(at)tcsi(dot)com> |
Subject: | Re: [SQL] problem with OR'ed AND queriess |
Date: | 1999-12-22 02:47:23 |
Message-ID: | 38603BBB.E93C561C@bellatlantic.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Michael McCarthy wrote:
> Hello David:
>
> Thanks for the quick reply; it means a lot to me.
>
> I tried "SET ksqo TO 'on'", and it works fine for my problem query; it
> allowed 570 key sets to be resolved in 2 seconds, which is a big step
> forward.
>
> I am writing a layer which makes postgres one RDBMS (of several) which can
> support a generic object persistence framework. The use of "SET ksqo TO
> 'on'" is a postgres implementation detail which applications using the
> framework will not be aware of. I am faced with the problem of whether or
> not to use "SET ksqo TO 'on'" for all queries, or find some criteria for
> turning it on and off.
>
> A quick examination of backend/optimizer/prep/prepkeyset.c shows me that
> there is some qualification of a query for keyset optimization; is there
> any reason why I should not always set ksqo on?
The qualification is strict so that it can be left on without breaking other queries. Most MS ODBC users
use it all the time; I have yet to hear of it causing any problems.
>
>
>
> > There is a work around feature that works for queries that gererate a parse tree similar to yours.
> > ODBC tools generate these kinds of queries all the time. Keyset queries. To acivate the
> > feature: SET ksqo TO 'on'; It rewrites the parse tree into a series of UNIONs. Not optimal but
> > it works for rectangular where clauses. (n ANDs) x (m ORs)
> >
> > -- Here is an example using a 3 part key
> > select ... from foo where
> > (v1 = "?" AND v2 = "?" AND v3 ="?") OR -- line 1
> > (v1 = "?" AND v2 = "?" AND v3 ="?") OR -- line 2
> > ...
> > (v1 = "?" AND v2 = "?" AND v3 ="?") OR -- line 9
> > (v1 = "?" AND v2 = "?" AND v3 ="?"); -- line 10
> > -- The question marks are replaced with the constant key values
>
> ************
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 1999-12-22 03:51:51 | Re: [SQL] problem with OR'ed AND queriess |
Previous Message | Stuart Gopen | 1999-12-22 00:14:41 | query result formatting |