From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
---|---|
To: | Rajmohan C <csrajmohan(at)gmail(dot)com> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: how to implement selectivity injection in postgresql |
Date: | 2014-08-13 19:58:17 |
Message-ID: | CAMkU=1wYryU1R51u4wZBimH3K90q3NSrugUw2Xka1DOcqwVb5g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Aug 13, 2014 at 9:33 AM, Rajmohan C <csrajmohan(at)gmail(dot)com> wrote:
> SELECT c1, c2, c3, FROM T1, T2, T3
> WHERE T1.x = T2.x AND
> T2.y=T3.y AND
> T1.x >= ? selectivity 0.00001 AND
> T2.y > ? selectivity 0.5 AND
> T3.z = ? selectivity 0.2 AND
> T3.w = ?
>
> I need to implement Selectivity injection as shown in above query in
> PostgreSQL by which we can inject selectivity of each predicate or at least
> selectivity at relation level directly as part of query. Is there any
> on-going work on this front? If there is no ongoing work on this, How
> should I start implementing this feature?
>
My plan was to create a boolean operator which always returns true, but
estimates its own selectivity as 0.001 (or better yet, parameterize that
selectivity estimate, if that is possible) which can be inserted into the
place where lower selectivity estimate is needed with an "AND".
And another one that always returns false, but has a selectivity estimate
near 1, for use in OR conditions when the opposite change is needed.
I think that will be much easier to do than to extent the grammar. And
probably more acceptable to the core team.
I think this could be done simply in an extension module without even
needing to change the core code, but I never got around to investigating
exactly how.
Cheers,
Jeff
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2014-08-13 22:25:02 | Re: how to implement selectivity injection in postgresql |
Previous Message | Pavel Stehule | 2014-08-13 19:27:39 | Re: PostrgeSQL vs oracle doing 1 million sqrts am I doing it wrong? |