Re: Partitioning for query performance
От | Jasen Betts |
---|---|
Тема | Re: Partitioning for query performance |
Дата | |
Msg-id | hq1pq2$qd2$1@reversiblemaps.ath.cx обсуждение исходный текст |
Ответ на | Re: Partitioning for query performance ("Danny Lo" <lo.dannyk@gmail.com>) |
Список | pgsql-novice |
On 2010-04-13, Danny Lo <lo.dannyk@gmail.com> wrote: > This is a multi-part message in MIME format. > > ------=_NextPart_000_004E_01CADB39.66239FF0 > Content-Type: text/plain; > charset="us-ascii" > Content-Transfer-Encoding: 7bit > > Hi, > > > > I have a question regarding improving query performing using table > partitioning: I recently partitioned a 20Gb table and was amazed at the performance boost. I only did it because I wanted to delete old data and the original table was too busy to vacuum. > EXECUTE 'SELECT * from > tablename > > where date = ''' || > current_date || ''''; > > .... > A parameterized query will not be optimized, since the > planner cannot know which partitions the parameter value might select at run > time. For the same reason, "stable" functions such as CURRENT_DATE must be > avoided. (PLPGSQL) EXECUTE is not a parameterised query. The way you are doing it EXECUTE sees a string with only constants in it. In any case even without constraint exclusion you can get good (but not best) perfromance if your parts are indexed on the relevant column; as an index scan which discovers the requested value is too high or is too low is very fast (not as fast as constraint exclusion, but still fast)
В списке pgsql-novice по дате отправления: