From: | negora <public(at)negora(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | PostgreSQL - General <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Why does it sort rows after a nested loop that uses already-sorted indexes? |
Date: | 2024-04-19 08:11:17 |
Message-ID: | 4c474300-2662-4b4e-bad1-ca9d36324a2c@negora.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> That's a level of analysis that it doesn't do...
Great. I suspected that, but I needed a confirmation from a reliable
source. Thank you!
> ...and TBH I'm not even
> entirely sure it's correct to assume that the output is sorted like
> that. At minimum you'd need an additional assumption that the
> outer side's join key is unique, which is a factor that we don't
> currently track when reasoning about ordering.
Ouch! I hadn't thought about that possibility! When I tried to mentally
reproduce the nested loop, I always considered the values of the outer
loop to be unique. I guess that was because, very often, I used unique
indexes for my tests... But it doesn't have to be so, of course.
Best regards.
On 18/04/2024 16:53, Tom Lane wrote:
> negora <public(at)negora(dot)com> writes:
>> As you can see, the planner does detect that the outer loop returns the
>> rows presorted by [sales_order.id]. However, it's unable to detect that
>> the rows returned by the inner loop are also sorted by [sales_order.id]
>> first, and then by [order_line.id].
>
> That's a level of analysis that it doesn't do, and TBH I'm not even
> entirely sure it's correct to assume that the output is sorted like
> that. At minimum you'd need an additional assumption that the
> outer side's join key is unique, which is a factor that we don't
> currently track when reasoning about ordering.
>
> regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Justin Clift | 2024-04-19 10:05:26 | Re: SSPI Feature Request |
Previous Message | Saksham Joshi | 2024-04-19 05:48:10 | Not able to grant access on pg_signal_backend on azure flexible server |