From: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> |
---|---|
To: | pgsql-performance(at)postgresql(dot)org |
Subject: | Re: Performance issues |
Date: | 2015-03-17 15:30:24 |
Message-ID: | 55084890.6000907@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
On 17.3.2015 16:24, Thomas Kellerer wrote:
> Tomas Vondra schrieb am 17.03.2015 um 15:43:
>> On 17.3.2015 15:19, Thomas Kellerer wrote:
>>> Tomas Vondra schrieb am 17.03.2015 um 14:55:
>>>> (2) using window functions, e.g. like this:
>>>>
>>>> SELECT * FROM (
>>>> SELECT *,
>>>> ROW_NUMBER() OVER (PARTITION BY touchpoint_execution_id
>>>> ORDER BY FROM max_creation_dt) AS rn
>>>> FROM s_f_touchpoint_execution_status_history
>>>> ) foo WHERE rn = 1
>>>>
>>>> But estimating this is also rather difficult ...
>>>
>>>
>>> From my experience rewriting something like the above using DISTINCT
>>> ON is usually faster.
>>
>> How do you get the last record (with respect to a timestamp column)
>> using a DISTINCT ON?
>
> You need to use "order by ... desc". See here: http://sqlfiddle.com/#!15/d4846/2
Nice, thanks!
>
> Btw: your row_number() usage wouldn't return the "latest" row either.
> It would return the "oldest" row.
Oh, right. I forgot the DESC in the window.
--
Tomas Vondra http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Steven Jones | 2015-03-18 11:21:08 | Very slow checkpoints |
Previous Message | Tomas Vondra | 2015-03-17 15:28:03 | Re: Performance issues |