Hi all. 
I wanted to compare the performances of 2 ways of writing a query, 
one using a cartesian join, one using a subselect, to see which 
one was the faster.
I used the EXPLAIN command to understand how Postgres 
planned to execute them, but the results are a little obscure.
Can somebody shed some light? 

Here are the results of the explains:

With the join:

EXPLAIN
SELECT distinct s.* FROM items_products AS r, support AS s 
WHERE r.family_name='XXX' 
                                 AND r.item_id=s.id 
                            ORDER BY s.date DESC

NOTICE:  QUERY PLAN:

Sort  (cost=38.89 rows=2 width=116)
  ->  Nested Loop  (cost=38.89 rows=2 width=116)
        ->  Seq Scan on items_products r  (cost=36.84 rows=1 
width=4)
        ->  Index Scan using support_id_key on support s  
(cost=2.05 rows=382
width=112)

With the subselect:

EXPLAIN
SELECT * FROM support WHERE id IN (SELECT 
DISTINCT(item_id) FROM
items_products WHERE family_name='XXX') ORDER BY date 
DESC;

NOTICE:  QUERY PLAN:

Sort  (cost=23.61 rows=382 width=112)
  ->  Seq Scan on support  (cost=23.61 rows=382 width=112)
        SubPlan
          ->  Unique  (cost=36.84 rows=1 width=4)
                ->  Sort  (cost=36.84 rows=1 width=4)
                      ->  Seq Scan on items_products  (cost=36.84 
rows=1 width
=4)

----

(I could also post table structure, if it's of any help).

All this figures confuse me. Which one should i use for 
comparison?

TIA, merry Xmas to all!


/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

Fabrizio Ermini               Alternate E-mail:
C.so Umberto, 7               [EMAIL PROTECTED]
loc. Meleto Valdarno          Mail on GSM: (keep it short!)
52020 Cavriglia (AR)          [EMAIL PROTECTED]

Reply via email to