Re: Question about Expected rows value in EXPLAIN output for Nested Loop node - Mailing list pgsql-general

From bb ddd
Subject Re: Question about Expected rows value in EXPLAIN output for Nested Loop node
Date
Msg-id 288922811.129669.1557567206864@nm62.abv.bg
Whole thread Raw
In response to Re: Question about Expected rows value in EXPLAIN output for NestedLoop node  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Question about Expected rows value in EXPLAIN output for NestedLoop node
Re: Question about Expected rows value in EXPLAIN output for Nested Loop node
List pgsql-general
Thanks, Adrian, but i was looking for something that goes into more depth.
For example there is one case described there where we have a Nested Loop with rows=33, and its 2 child nodes have each
rows=10.
But first of all this is a very exotic join condition (t1.hundred < t2.hundred) and second of all i cannot find any
explanationhow this number 33 is derived. They literally spend less than 2 sentences on this case.
 

In my case i as well have Nested Loop's rows value different than the product of its 2 children's rows values, but with
anormal join condition on a foreign key.
 
My guesses (again) are the same way it keeps some statistics (very curious what exactly) about what is the probability
2random rows from each table satisfy that condition (t1.hundred < t2.hundred), it also keeps statistics what is the
probability2 random rows from each table satisfy the regular normal join condition like the one i have in my case
(basicallyt1.t2_id=t2.id). And in both cases it just applies that probability to the product of the rows values of the
2child nodes, to calculate the expected rows value of the result of the Nested Loop. But i am just guessing.
 







 >-------- Оригинално писмо --------

 >От: Adrian Klaver adrian.klaver@aklaver.com

 >Относно: Re: Question about Expected rows value in EXPLAIN output for Nested
 Loop node

 >До: bb ddd <nnickoloff1234@abv.bg>

 >Изпратено на: 10.05.2019 19:02



 
> On 5/10/19 8:56 AM, bb ddd wrote:
 
> > Thanks for the reply. Here it is: https://explain.depesz.com/s/LQCS
 
> > 
 
> > My main trouble is not with this exact case, but i am looking for a general description of the algorithm how those
numbersare calculated. In the meanwhile i also constructed a couple of artificial tables to experiment with and see how
thesenumbers change, and am pretty sure my guesses there in the original question are quite close to what is going on,
butwould be so much easier to read explain plans, if there was some documentation about how the expected rows are
calculatedfor different nodes, in different contexts (like when loops=1 vs loops>1) maybe what statistics they use, how
theydepend on the numbers of their child nodes etc.
 
 
> > 
 
> > 
 
> 
 
> How about?:
 
> https://www.postgresql.org/docs/11/using-explain.html
 
> 
 
> 
 
> -- 
 
> Adrian Klaver
 
> adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: "Peter J. Holzer"
Date:
Subject: Re: PG version recommendation
Next
From: Adrian Klaver
Date:
Subject: Re: Question about Expected rows value in EXPLAIN output for NestedLoop node