Re: Cluster table based on grand parent? - Mailing list pgsql-general

From Rob Sargent
Subject Re: Cluster table based on grand parent?
Date
Msg-id add42d7a-3a90-73d8-485e-fd8eb9410fde@gmail.com
Whole thread Raw
In response to Re: Cluster table based on grand parent?  (Dominique Devienne <ddevienne@gmail.com>)
List pgsql-general
On 3/28/23 10:28, Dominique Devienne wrote:
On Tue, Mar 28, 2023 at 6:06 PM Ron <ronljohnsonjr@gmail.com> wrote:
You can only get from parent to grandchild via child.id to grandchild.parent, so why not cluster grandchild on grandchild.parent?

Hi. I don't understand your question. Yes, of course, if I want all grand-children of a given parent, I'll do for example:

select p.id, c.id, c.name, gc.*
  from  grandchild gc
   join child c on gc.parent = c.id
   join parent p on c.parent = p.id
where p.name = $1

But w/o clustering on a denormalized grandchild.grandparent FK column, as Peter showed,
and cluster only on grandchild.parent, that's not going to access a mostly continuous range
of pages to fetch those all grandchild rows for that one parent. But probably 10 to 50 "row-clusters",
given the fan-out I mentioned earlier at the child-table level. Or am I missing something?
Are you using HDD (spinning) or SSD discs?
Is you world strictly three levels: grand,parent,child?
What tests have you done so far to compare clustered to non-clustered?

pgsql-general by date:

Previous
From: Maciek Sakrejda
Date:
Subject: Re: Using CTID system column as a "temporary" primary key
Next
From: Ron
Date:
Subject: Re: Cluster table based on grand parent?