Re: Weird waste time when UNION ALL to an empty result set

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Emanuel Calvo <postgres(dot)arg(at)gmail(dot)com>
Cc: postgresql Forums <pgsql-general(at)postgresql(dot)org>
Subject: Re: Weird waste time when UNION ALL to an empty result set
Date: 2011-11-09 23:04:07
Message-ID: 22311.1320879847@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Emanuel Calvo <postgres(dot)arg(at)gmail(dot)com> writes:
> postgres=# explain (buffers true, costs true, analyze true ) (select i
> from random_values) UNION ALL (SELECT NULL LIMIT 0);
> QUERY PLAN
> --------------------------------------------------------------------------------------------------------------------------------------
> Result (cost=0.00..16897.02 rows=1000001 width=4) (actual
> time=0.203..13160.797 rows=1000000 loops=1)
> Buffers: shared hit=608 read=6289
> -> Append (cost=0.00..16897.02 rows=1000001 width=4) (actual
> time=0.196..7925.918 rows=1000000 loops=1)
> Buffers: shared hit=608 read=6289
> -> Seq Scan on random_values (cost=0.00..16897.00
> rows=1000000 width=4) (actual time=0.190..2852.144 rows=1000000
> loops=1)
> Buffers: shared hit=608 read=6289
> -> Limit (cost=0.00..0.01 rows=1 width=0) (actual
> time=0.007..0.007 rows=0 loops=1)
> -> Result (cost=0.00..0.01 rows=1 width=0) (never executed)
> Total runtime: 15680.066 ms
> (9 rows)

> 10 seconds to UNION *nothing*? Is an expected behavior?

I'm inclined to read this result as showing that EXPLAIN ANALYZE has
very high per-node overhead on your machine. That is not too uncommon
on machines that don't have any way to read the clock without a kernel
call. You might try comparing straight execution times (without
using EXPLAIN) to get a clearer idea of how much it costs to pass data
through Append/Result. (It's not free, no.)

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Emanuel Calvo 2011-11-09 23:24:29 Re: Weird waste time when UNION ALL to an empty result set
Previous Message Keegan,Nate 2011-11-09 23:00:02 PostgreSQL 9.0.5 concat Issue