Re: Query Plan - Index Scan & Seq Scan

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

 



EXPLAIN ANALYZE (SELECT id FROM a,b WHERE a.id = b.id AND code >2 AND
b.account_id = 16221);

    QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Merge Join  (cost=141372.58..141462.28 rows=1 width=8) (actual
time=726.172..726.172 rows=0 loops=1)
   Merge Cond: ("outer".id = "inner".id)
   ->  Index Scan using id_idx on b  (cost=0.00..14415.96 rows=171 width=4)
(actual time=726.168..726.168 rows=0 loops=1)
         Filter: (account_id = 16221)
   ->  Sort  (cost=141372.58..141375.27 rows=1076 width=12) (never executed)
         Sort Key: a.id
         ->  Seq Scan on a  (cost=0.00..141318.40 rows=1076 width=12) (never
executed)
               Filter: (code > 2)
 Total runtime: 726.253 ms
(9 rows)

Thanks,
-Prasanth.

Scott Marlowe wrote:
> On Thu, 2005-05-12 at 10:51, Prasanth wrote:
> 
>>I agree with you.
>>
>>But I have the where conditions on the tables I was expecting the planner to
>>user index scan but it went for seq scan.
>>
>>I did a little testing using what you said.
>>
>>Below are the results.
>>
>>SELECT a.id FROM a,b WHERE a.id = b.id AND a.code >2 AND b.account_id = 16221;
>>
>>Total runtime: 18194.936 ms
>>
>>Then I set the seqscan off and ran the same query.
>>
>>Total runtime: 27.554 ms
> 
> 
> Good!  This tells us two things, 1:  Your database can use the indexes
> (sometimes indexes can't be used for various reasons, which are quickly
> disappearing by the way.) and 2:  Your database is making the wrong
> choice about when to use a seq scan versus an index.
> 
> What does the explain analyze output from that query say about row
> estimates versus actual rows returned?
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faq
> 
> 


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux