On Mon, Aug 9, 2021 at 9:06 AM David G. Johnston <david.g.johns...@gmail.com> wrote:
> On Mon, Aug 9, 2021 at 8:02 AM PG Doc comments form < > nore...@postgresql.org> wrote: > >> Hello, on page >> https://www.postgresql.org/docs/current/row-estimation-examples.html - >> there >> is a example: >> selectivity = (1 - null_frac1) * (1 - null_frac2) * min(1/num_distinct1, >> 1/num_distinct2) >> = (1 - 0) * (1 - 0) / max(10000, 10000) >> = 0.0001 >> in the first string " * min" and in the second " / max" >> as I understand it isn't correct. >> > > Division is just multiplication by the reciprocal so while the > presentation here is inconsistent it is correct. Likewise, the larger a > number the smaller its reciprocal, so the change from min to max also > works. > > FWIW this used to be presented with the calculation and formula in sync, but the original had a simple typo in the calculation. When the typo got fixed back in December of 2007 [1] the author of the patch simplified the calculation at the same time. I suggest we update the formula line to match the calculation presented. David J. 1. https://github.com/postgres/postgres/commit/f5678e8e07563e34ae4dc832546977d13edcd665