On 3/28/23 11:28, Dominique Devienne wrote:
On Tue, Mar 28, 2023 at 6:06 PM Ron <ronljohnso...@gmail.com> wrote:
You can only get from parent to grandchild via//child.id
<http://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 <http://p.id>, c.id <http://c.id>, c.name <http://c.name>, gc.*
from grandchild gc
join child c on gc.parent = c.id <http://c.id>
join parent p on c.parent = p.id <http://p.id>
where p.name <http://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?
No, you're not missing something. If you want to go directly from
grandparent to grandchild, then you need to put grandparent_id in the
grandchild table.
Rob Sargent is right, too, though: *practically* it might not make a
difference. You've got to test.
--
Born in Arizona, moved to Babylonia.