PgSQL-dotazy

Karel Zak zakkr na zf.jcu.cz
Úterý Prosinec 3 13:21:33 CET 2002


On Tue, Dec 03, 2002 at 12:49:28PM +0100, Zdenek Prchal wrote:
> > 
> > On Tue, Dec 03, 2002 at 09:17:13AM +0100, Frantisek Darena wrote:
> > > select sl1 sloupec from tab1
> > > union all
> > > select sl2 sloupec from tab2
> > > order by sloupec (nebo order by 1)
> > 
> >  Ooops ...todle je pochopitelne lepsi sesortovani nez jsem pred 
> >  chvilkou poslal s tim subselectem, jo v jednoduchosti je sila :-) 
> > 
> 
> No lepsi, je to jednodussi zapis, to ano, ale IMHO by to v obou pripadech
> melo vest na stejny execution plan, ne? Co na to rika EXPLAIN?

 Jasne. To by se jinak nedalo tvrdit, ze PostgreSQL ma nejlepsi planner 
dotazu na svete :-)

# EXPLAIN SELECT data FROM a UNION ALL SELECT data FROM b AS x ORDER BY data;
                                  QUERY PLAN                                   
-------------------------------------------------------------------------------
 Sort  (cost=149.66..154.66 rows=2000 width=32)
   Sort Key: data
   ->  Append  (cost=0.00..40.00 rows=2000 width=32)
         ->  Subquery Scan "*SELECT* 1"  (cost=0.00..20.00 rows=1000 width=32)
               ->  Seq Scan on a  (cost=0.00..20.00 rows=1000 width=32)
         ->  Subquery Scan "*SELECT* 2"  (cost=0.00..20.00 rows=1000 width=32)
               ->  Seq Scan on b x  (cost=0.00..20.00 rows=1000 width=32)
(7 řádek)

# EXPLAIN SELECT * FROM (SELECT data FROM a UNION ALL SELECT data FROM b) as x ORDER BY data;
                                     QUERY PLAN                                      
-------------------------------------------------------------------------------------
 Sort  (cost=149.66..154.66 rows=2000 width=32)
   Sort Key: data
   ->  Subquery Scan x  (cost=0.00..40.00 rows=2000 width=32)
         ->  Append  (cost=0.00..40.00 rows=2000 width=32)
               ->  Subquery Scan "*SELECT* 1"  (cost=0.00..20.00 rows=1000 width=32)
                     ->  Seq Scan on a  (cost=0.00..20.00 rows=1000 width=32)
               ->  Subquery Scan "*SELECT* 2"  (cost=0.00..20.00 rows=1000 width=32)
                     ->  Seq Scan on b  (cost=0.00..20.00 rows=1000 width=32)
(8 řádek)


    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/


Další informace o konferenci Databases