Re: Efficiently query for the most recent record for a given user

Поиск
Список
Период
Сортировка
От Claudio Freire
Тема Re: Efficiently query for the most recent record for a given user
Дата
Msg-id CAGTBQpY5pDZBgpo+huLzUpi6zve69V7KKWUVeLaSBpr6ZvOLwQ@mail.gmail.com
обсуждение исходный текст
Ответ на Efficiently query for the most recent record for a given user  (Robert DiFalco <robert.difalco@gmail.com>)
Ответы Re: Efficiently query for the most recent record for a given user
Re: Efficiently query for the most recent record for a given user
Список pgsql-performance
On Wed, Aug 7, 2013 at 3:12 PM, Robert DiFalco <robert.difalco@gmail.com> wrote:
> Let's say I have a table something like this:
>
>    create table call_activity (
>         id int8 not null,
>         called timestamp,
>         user_id int8 not null,
>         primary key (id)
>         foreign key (user_id) references my_users
>     )
>
>
> I want to get the last call_activity record for a single user.  Is there ANY
> way to efficiently retrieve the last record for a specified user_id, or do I
> need to de-normalize and update a table with a single row for each user each
> time a new call_activity record is inserted? I know I how to do the query
> without the summary table (subquery or GROUP BY with MAX) but that seems
> like it will never perform well for large data sets. Or am I full of beans
> and it should perform just fine for a huge data set as long as I have an
> index on "called"?


Create an index over (user_id, called desc), and do

select * from call_activity where user_id = blarg order by called desc limit 1


В списке pgsql-performance по дате отправления:

Предыдущее
От: Robert DiFalco
Дата:
Сообщение: Efficiently query for the most recent record for a given user
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Efficiently query for the most recent record for a given user