From: | Cachique <cachique(at)gmail(dot)com> |
---|---|
To: | Guyren Howe <guyren(at)gmail(dot)com> |
Cc: | Colin Morelli <colin(dot)morelli(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Filtering by UUID |
Date: | 2016-09-29 23:40:51 |
Message-ID: | CAEfeRhWyx_ND6D8uCwGhtjsfgOb5XqhzkK8J1aq5JD62QbxNfw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Take a look at these links. It should give you a clue to avoid LIMIT /
OFFSET.
https://www.citusdata.com/blog/2016/03/30/five-ways-to-paginate/
http://use-the-index-luke.com/blog/2013-07/pagination-done-the-postgresql-way
Regards,
Walter
On Sep 29, 2016 19:19, "Guyren Howe" <guyren(at)gmail(dot)com> wrote:
>
> On Sep 29, 2016, at 16:14 , Colin Morelli <colin(dot)morelli(at)gmail(dot)com> wrote:
>
> Well then...just like that you made me feel like a total idiot! Hah.
>
> I guess that would work fine. I just need to encode some additional
> information in the pagination links that the API returns (a pagination
> "marker" would be a combination of created_at and uuid).
>
> I know this question is virtually impossible to answer without more
> information, but based on your gut - do you think it would make sense to
> define a compound index across (created_at, uuid), or do you think just an
> index on created_at is enough, if we can assume that *most* records
> (>80%) won't have collisions on their created_at timestamp?
>
>
> Quite likely just the created_at will be sufficient, although I like to
> add other fields to the index since you're going to have it anyway, if you
> have occasion to often filter the list on some other field.
>
> But you don't need the UUID field because even if there is collision, it
> will be a small number of records.
>
> On Thu, Sep 29, 2016 at 7:09 PM Guyren Howe <guyren(at)gmail(dot)com> wrote:
>
>> On Sep 29, 2016, at 16:03 , Colin Morelli <colin(dot)morelli(at)gmail(dot)com>
>> wrote:
>> >
>> > Hey list,
>> >
>> > I'm using UUID primary keys in my application. I need to add
>> pagination, and am trying to avoid OFFSET/LIMIT. I do have a created_at
>> timestamp that I could use, but it's possible for multiple records to be
>> created at the same timestamp (postgres offers millisecond precision here,
>> I believe?)
>> >
>> > Is there an efficient way to filter based on the time component of UUID
>> v1s? WHERE id > 'some-uuid' doesn't seem to work, as it looks like it's
>> just performing a lexicographic sort on the hex representation of the UUID.
>> Or, alternatively, does anyone have other suggestions on paginating large
>> data sets?
>>
>> Why not just sort on (created_at, uuid) (ie us the UUID just to force a
>> complete ordering)?
>>
>>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Rakesh Kumar | 2016-09-30 00:16:03 | Re: Multi tenancy : schema vs databases |
Previous Message | Guyren Howe | 2016-09-29 23:18:09 | Re: Filtering by UUID |