| From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
|---|---|
| To: | pgsql-performance(at)postgresql(dot)org |
| Subject: | Re: Performance issues |
| Date: | 2015-03-17 15:24:14 |
| Message-ID: | me9guu$cvp$1@ger.gmane.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
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
Btw: your row_number() usage wouldn't return the "latest" row either.
It would return the "oldest" row.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tomas Vondra | 2015-03-17 15:28:03 | Re: Performance issues |
| Previous Message | Vivekanand Joshi | 2015-03-17 15:16:03 | Re: Performance issues |