Question about explain-command...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I just discovered the explain command and well ... have some (for you
of course very stupid) questions.

I do a quite large (for my taste) join, the query looks like the following:
SELECT DISTINCT customer.email AS cemail, customer.key AS ckey,
customer.anrede AS canrede, customer.strasse AS cstrasse, customer.plz
AS cplz, customer.ort AS cort, customer.vorname AS cvorname,
customer.nachname AS cnachname , custtype.name AS tname, customer.land
AS cland, customer.datanotvalid AS cdatanvalid FROM customer LEFT JOIN
sells ON customer.key=sells.custid LEFT JOIN goods ON
sells.goodsid=goods.key LEFT JOIN custtype ON
customer.custgroup=custtype.key LEFT JOIN prodtype ON
prodtype.key=goods.prodgroup WHERE customer.nachname LIKE  '%name%';

All primary keys are indixed, and this is what explain tells me:
Unique  (cost=15.67..16.69 rows=34 width=115)
  ->  Sort  (cost=15.67..15.75 rows=34 width=115)
        Sort Key: customer.email, customer."key", customer.anrede, customer.str
asse, customer.plz, customer.ort, customer.vorname, customer.nachname, custtype.
name, customer.land, customer.datanotvalid
        ->  Hash Left Join  (cost=6.16..14.80 rows=34 width=115)
              Hash Cond: ("outer".prodgroup = "inner"."key")
              ->  Hash Left Join  (cost=4.97..13.10 rows=34 width=119)
                    Hash Cond: ("outer".custgroup = "inner"."key")
                    ->  Hash Left Join  (cost=3.88..11.49 rows=34 width=111)
                          Hash Cond: ("outer".goodsid = "inner"."key")
                          ->  Hash Left Join  (cost=1.98..9.08
rows=34 width=11                                1)
                                Hash Cond: ("outer"."key" = "inner".custid)
-> Seq Scan on customer (cost=0.00..6.10 rows =34 width=107)
                                      Filter: ((nachname)::text ~~
'%au%'::text                                )
                                ->  Hash  (cost=1.78..1.78 rows=78 width=8)
-> Seq Scan on sells (cost=0.00..1.78 r ows=78 width=8)
                          ->  Hash  (cost=1.72..1.72 rows=72 width=8)
-> Seq Scan on goods (cost=0.00..1.72 rows=72 width=8)
                    ->  Hash  (cost=1.08..1.08 rows=8 width=16)
                          ->  Seq Scan on custtype  (cost=0.00..1.08
rows=8 wid                                th=16)
              ->  Hash  (cost=1.15..1.15 rows=15 width=4)
                    ->  Seq Scan on prodtype  (cost=0.00..1.15 rows=15 width=4)


What does the hash-lines mean, does that mean my query does not use
the indices at all?
Why are some table-names and some column-names surrounded by ' " '?
Are they threated as text-columns?
I have to admit that the tables are just filled with test-data so the
analyzer may take just a very simple way since almost no data is in...

lg Clemens


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux