On Wednesday, November 17, 2021 4:19 PM, Guillaume Lelarge guilla...@lelarge.info<mailto:guilla...@lelarge.info> wrote: >> -> Parallel Seq Scan on c (cost=0.00..8591.67 rows=416667 width=0) (actual >> time=0.030..140.036 rows=333333 loops=3) >In my previous example, actual row number is 333333*3=1e6(which is correct), >so I think the actual time is 140.036*3ms. >Do your think the loops(3) has no meaning for parallel scan node when >calculate actual time? > >As far as I understand it, you have to multiply the number of rows by the >number of loops, but this doesn't apply to duration at least for parallel >>queries.
Yes, I got your point. I’m not familiar with PostgreSQL planner/executor, but if the code is correct, then maybe some modification should be done at [1] as below: Before: Multiply by the loops value to get the total time actually spent in the node. After: Multiply by the loops value to get the total time actually spent in the node (for node in the parallel portion of the plan, this is not needed). [1] https://www.postgresql.org/docs/14/using-explain.html What do you think? Regards, Tang