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 explanation how 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 a normal 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 2 random rows from each table satisfy 
that condition (t1.hundred < t2.hundred), it also keeps statistics what is the 
probability 2 random rows from each table satisfy the regular normal join 
condition like the one i have in my case (basically t1.t2_id=t2.id). And in 
both cases it just applies that probability to the product of the rows values 
of the 2 child nodes, to calculate the expected rows value of the result of the 
Nested Loop. But i am just guessing.







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

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

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

 >До: bb ddd <nnickoloff1...@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 numbers are calculated. In the 
> > meanwhile i also constructed a couple of artificial tables to experiment 
> > with and see how these numbers change, and am pretty sure my guesses there 
> > in the original question are quite close to what is going on, but would be 
> > so much easier to read explain plans, if there was some documentation about 
> > how the expected rows are calculated for different nodes, in different 
> > contexts (like when loops=1 vs loops>1) maybe what statistics they use, how 
> > they depend on the numbers of their child nodes etc.
 
> > 
 
> > 
 
> 
 
> How about?:
 
> https://www.postgresql.org/docs/11/using-explain.html
 
> 
 
> 
 
> -- 
 
> Adrian Klaver
 
> adrian.kla...@aklaver.com


Reply via email to