pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Ľubomír Varga <luvar@plaintext.sk>
To: pgsql-performance@postgresql.org
Subject: Some question
Date: Wed, 31 Mar 2010 17:46:38 +0200
Message-ID: <201003311746.38192.luvar@plaintext.sk> (raw)

Hi, stright to my "problem":

explain
SELECT * FROM t_route
	WHERE t_route.route_type_fk = 1
	limit 4;

"Limit  (cost=0.00..0.88 rows=4 width=2640)"
"  ->  Seq Scan on t_route  (cost=0.00..118115.25 rows=538301 width=2640)"
"        Filter: (route_type_fk = 1)"



If I try to select constant 1 from table with two rows, it will be something 
like this:

explain
SELECT * FROM t_route
	WHERE t_route.route_type_fk = (SELECT id FROM t_route_type WHERE type = 2)
	limit 4;

"Limit  (cost=1.02..1.91 rows=4 width=2640)"
"  InitPlan"
"    ->  Seq Scan on t_route_type  (cost=0.00..1.02 rows=1 width=8)"
"          Filter: ("type" = 2)"
"  ->  Seq Scan on t_route  (cost=0.00..118115.25 rows=535090 width=2640)"
"        Filter: (route_type_fk = $0)"



First query is done in about milicesonds. Second is longer than 60 seconds. 
t_route is bigger table (~10M rows).

I think that it seq scans whole table. Is it bug? If no, how can I achieve 
that second select will not take time to end of world...

Have a nice day and thanks for any reply.

-- 
Odborník na všetko je zlý odborník. Ja sa snažím byť výnimkou potvrdzujúcou 
pravidlo.



view thread (6+ messages)  latest in thread

Message-ID: <201003311746.38192.luvar@plaintext.sk>
Permalink:  ../201003311746.38192.luvar@plaintext.sk/
Also on:    postgresql.org/message-id/201003311746.38192.luvar@plaintext.sk

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: luvar@plaintext.sk
  Subject: Re: Some question
  In-Reply-To: <201003311746.38192.luvar@plaintext.sk>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox