On 12.02.2025 11:54, Andrei Lepikhov wrote:
May we agree on a more general formula to print at least two meaningful digits if we have a fractional part?

Examples:
- actual rows = 2, nloops = 2 -> rows = 1
- actual rows = 9, nloops = 5 -> rows = 1.8
- actual rows = 101, nloops = 100 -> rows = 1.0
- actual rows = 99, nloops = 1000000 -> rows = 0.000099

It may guarantee that an EXPLAIN exposes most of the data passed the node, enough to tangle it with actual timing and tuples at the upper levels of the query.

I think the idea of keeping two significant digits after the decimal point is quite reasonable. The thing is, rows=0.000001 or something similar can only occur when loops is quite large. If we show the order of magnitude in rows, it will be easier for the user to estimate the order of total rows. For example, if we see this:

rows=0.000056 loops=4718040

the user can quickler approximate the order of total rows for analyzing the upper levels of the query.

However, keep in mind that I am against using the E notation, as many users have mentioned that they are not mathematicians and are not familiar with the concept of "E".




I suggest that when thinking about what to change here,
you start by considering how you'd adjust the docs at
https://www.postgresql.org/docs/devel/using-explain.html
to explain the new behavior.  If you can't explain it
clearly for users, then maybe it's not such a great idea.
Agree

So do I. Firstly, I'll think how to explain it.

--
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.



Reply via email to