Highly obscure and erratic(II)

From: Varun Kacholia <varunk(at)cse(dot)iitb(dot)ac(dot)in>
To: Martijn van Oosterhout <kleptog(at)svana(dot)org>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Highly obscure and erratic(II)
Date: 2002-06-20 22:30:32
Message-ID: 20020621040312.A16214@voxel.cse.iitb.ac.in
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

hi ,
> select * from dbmedia, wdmedia a, wdmedia b
> where id = a.id and a.word='word1'
> and id = b.id and b.word='word2'
> etc

well thanks for that..
but i really cannot understand y pgsql resorts to wierd behaviour..
like for this one :

==========================================================================
suryadb=# explain SELECT * FROM dbmedia d, wdmedia a1,wdmedia a2
WHERE d.id = a1.id AND a1.word = 'word1' AND
d.id=a2.id and a2.word='word2'
and d.host like '144.16%' LIMIT 200;
NOTICE: QUERY PLAN:
Limit (cost=5033.63..10547.45 rows=1 width=108)
-> Nested Loop (cost=5033.63..10547.45 rows=1 width=108)
-> Hash Join (cost=5033.63..10196.02 rows=83 width=32)
-> Index Scan using wdkmedia on wdmedia a1 (cost=0.00..5027.19 rows=2575 width=16)
-> Hash (cost=5027.19..5027.19 rows=2575 width=16)
-> Index Scan using wdkmedia on wdmedia a2 (cost=0.00..5027.19 rows=2575 width=16)
-> Index Scan using indx2 on dbmedia d (cost=0.00..4.21 rows=1 width=76)
============================================================================
clearly an index scan is done but for this...
==========================================================================
suryadb=# explain SELECT * FROM dbmedia d, wdmedia a1
WHERE d.id = a1.id AND a1.word = 'word1'
and d.host like '144.16%' LIMIT 200;
NOTICE: QUERY PLAN:

Limit (cost=0.00..8811.42 rows=1 width=92)
-> Nested Loop (cost=0.00..8811.42 rows=1 width=92)
-> Seq Scan on dbmedia d (cost=0.00..3752.04 rows=1 width=76)
^^^^^^^^^^^^^^^
-> Index Scan using wdkmedia on wdmedia a1 (cost=0.00..5027.19 rows=2575 width=16)
============================================================================

y is a seq scan done here?
hmm..perhaps cuz it might be thinking that '144.16%' has a high share?
well but if the query is executed other way .. ie first Index scan on
wdkmedia then Index scan on dbmedia is will be "inf" times fasters.
I want it to first look in wdmedia and then find the results by index
scan which are present in dbmedia
(which initially i was doing using IN).
Is there a way by which i can force it not to use seq scan?
Will be grateful for any help

> Seems odd but it may work. But as a rule, joins are faster than subqueries
> and avoid IN, INTERSECT and UNION at all costs. Do you have a book on SQL
> around?
> --
--
------
Varun
If Bill Gates had a penny for every time Windows crashed......Oh wait, he does.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Marc G. Fournier 2002-06-20 22:54:42 Re: website design
Previous Message David Ford 2002-06-20 22:14:55 Download version on website