| From: | Luís Roberto Weck <luisroberto(at)siscobra(dot)com(dot)br> |
|---|---|
| To: | Michael Lewis <mlewis(at)entrata(dot)com> |
| Cc: | "pgsql-performance(at)lists(dot)postgresql(dot)org" <pgsql-performance(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Last event per user |
| Date: | 2019-08-13 11:34:58 |
| Message-ID: | e2e251f8-d3df-e4b1-97c0-6142a873b241@siscobra.com.br |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
> On Mon, Aug 12, 2019 at 5:03 PM Luís Roberto Weck
> <luisroberto(at)siscobra(dot)com(dot)br <mailto:luisroberto(at)siscobra(dot)com(dot)br>> wrote:
>
>> If you modify last_user_event_2 to select user and event info in
>> the view, and just put there where clause directly on the view
>> which is not joined to anything, instead of on the "extra copy"
>> of the users table like you were showing previously, I would
>> expect that the performance should be excellent.
>>
> But I need user_id and user_group to be outside of the view
> definition. user_id and user_group are dynamic values, as in, I
> need to call this query multiple times for different user_ids and
> user_groups .
>
>
> I don't follow. Perhaps there is something within the limitations of
> the ORM layer that I am not expecting. If you have this view-
>
> "last_user_event_2"
>
> SELECT u.*, e.*
>
> FROM users u
>
> JOIN LATERAL (SELECT *
>
> FROM events
>
> WHERE user_id = u.user_id
>
> AND user_group = u.user_group
>
> ORDER BY timestamp_inc DESC
>
> LIMIT 1 ) e ON TRUE
>
>
> And you execute a query like this-
>
> SELECT * FROM last_user_event_2 e WHERE user_id = 1272897 and
> user_group = 19117;
>
> Then I would expect very good performance.
You're right, thanks! I just had to do a little adjustment on the
lateral join. Since both users and events have user_id and user_group,
PostgreSQL complains that I can't have more than one column with the
same name. I fixed it by changing the LATERAL condition from "ON TRUE"
to "USING (user_id,user_group)" (which I didn't even knew I could do).
| From | Date | Subject | |
|---|---|---|---|
| Next Message | 王若楠 | 2019-08-13 14:15:09 | performance bottlenecks on lock transactionid |
| Previous Message | Kristian Ejvind | 2019-08-13 11:08:21 | Re: zabbix on postgresql - very slow delete of events |