Re: Last event per user

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: Raw Message | Whole Thread | 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).

In response to

Browse pgsql-performance by date

  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