Re: [GENERAL] select query not using index

2006-12-03 Thread vivek
Yes , that was the case indeed. I disabled seq scan and it used the index. And 
the cost was higher than seq scan. 

Thanks a lot for all your replies.

With warm regards.

Vivek J. Joshi.

[EMAIL PROTECTED]
Trikon Electronics Pvt. Ltd.

All science is either physics or stamp collecting.
-- Ernest Rutherford



A. Kretschmer wrote:
> >am  Sat, dem 02.12.2006, um 16:35:47 +0530 mailte [EMAIL PROTECTED] 
folgendes:
>> 
>> The index was created before the table was populated. There are 3 rows
>> in the table for 3 different users. Now when I do a 
>
>In this case, with only 3 rows, it is much cheaper to do a seq-scan
>instead a index-scan, because a index-scan must read the index first and
>then the table. And in your case, with only 3 rows, the engine needs
>only one page to read.
>
>
>
>Andreas
>-- 
>Andreas Kretschmer
>Kontakt:  Heynitz: 035242/47215,   D1: 0160/7141639 (mehr: -> Header)
>GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net
>
>---(end of broadcast)---
>TIP 2: Don't 'kill -9' the postmaster



---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [GENERAL] select query not using index

2006-12-02 Thread hubert depesz lubaczewski

On 12/2/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:


The index was created before the table was populated. There are 3 rows in
the table for 3 different users. Now when I do a



postgresql will not use index scan for table with 3 rows in it. it is way
faster to use seq scan on it.

depesz

--
http://www.depesz.com/ - nowy, lepszy depesz


Re: [GENERAL] select query not using index

2006-12-02 Thread A. Kretschmer
am  Sat, dem 02.12.2006, um 16:35:47 +0530 mailte [EMAIL PROTECTED] folgendes:
> 
> The index was created before the table was populated. There are 3 rows
> in the table for 3 different users. Now when I do a 

In this case, with only 3 rows, it is much cheaper to do a seq-scan
instead a index-scan, because a index-scan must read the index first and
then the table. And in your case, with only 3 rows, the engine needs
only one page to read.



Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47215,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [GENERAL] select query not using index

2006-12-02 Thread Gregory S. Williamson
Vivek --

If you could let people know what version of postgres, and which OS, it might 
help.

A guess: the planner sees that there are very few rows and decides that a 
sequential scan is faster (this is because a sequential scan on a table with 
only a few rows is probably done in one operation; retrieving index values and 
the actual data rows involves more trips to disk, potentially. You could test 
this by turning off seq scan as a user option and re-running the query.

I note that it is casting "vivek" as text and the underlying column varchar; in 
earlier versions of postgres this might cause a mismatch and confuse the 
planner; try casting as "WHERE username = 'vivek'::varchar" and see if that is 
an improvement.

HTH,

Greg Williamson
DBA
GlobeXplorer LLC

-Original Message-
From:   [EMAIL PROTECTED] on behalf of [EMAIL PROTECTED]
Sent:   Sat 12/2/2006 3:05 AM
To: pgsql-general@postgresql.org
Cc:     
Subject:        [GENERAL] select query not using index

Dear Friends, 
I have a table as
 \d userpref;
   Table "public.userpref"
   Column|  Type  |   Modifiers
-++
 username| character varying(101) | not null
 email   | character varying(255) | not null
 context | character varying(32)  | not null default 'from_box'::character 
varying
 Indexes:
"userpref_user_idx" btree (username)
Foreign-key constraints:
"userpref_username_fkey" FOREIGN KEY (username, email) REFERENCES 
users(username, email)

The index was created before the table was populated. There are 3 rows in the 
table for 3 different users. Now when I do a 

EXPLAIN  SELECT * from userpref where username = 'vivek';
QUERY PLAN
---
 Seq Scan on userpref  (cost=0.00..1.26 rows=1 width=349)
   Filter: ((username)::text = 'vivek'::text)

EXPLAIN ANALYZE  SELECT * from userpref where username = 'vivek';
 QUERY PLAN

 Seq Scan on userpref  (cost=0.00..1.04 rows=1 width=70) (actual 
time=0.060..0.071 rows=1 loops=1)
   Filter: ((username)::text = 'vivek'::text)
 Total runtime: 0.216 ms
(3 rows)


It shows seq scan . It is not using the index perhaps. But I fail to understand 
why does it not use the index created? I have tried vacuuming the database, 
reindexing the table, running analyze command. 
Can anyone tell me what am I doing wrong?






With warm regards.

Vivek J. Joshi.

[EMAIL PROTECTED]
Trikon Electronics Pvt. Ltd.

All science is either physics or stamp collecting.
-- Ernest Rutherford




---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


---
Click link below if it is SPAM [EMAIL PROTECTED]
"https://mailscanner.globexplorer.com/dspam/dspam.cgi?signatureID=457169e3251904846743324&[EMAIL
 PROTECTED]&retrain=spam&template=history&history_page=1"
!DSPAM:457169e3251904846743324!
---






---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org/


[GENERAL] select query not using index

2006-12-02 Thread vivek
Dear Friends, 
I have a table as
 \d userpref;
   Table "public.userpref"
   Column|  Type  |   Modifiers
-++
 username| character varying(101) | not null
 email   | character varying(255) | not null
 context | character varying(32)  | not null default 'from_box'::character 
varying
 Indexes:
"userpref_user_idx" btree (username)
Foreign-key constraints:
"userpref_username_fkey" FOREIGN KEY (username, email) REFERENCES 
users(username, email)

The index was created before the table was populated. There are 3 rows in the 
table for 3 different users. Now when I do a 

EXPLAIN  SELECT * from userpref where username = 'vivek';
QUERY PLAN
---
 Seq Scan on userpref  (cost=0.00..1.26 rows=1 width=349)
   Filter: ((username)::text = 'vivek'::text)

EXPLAIN ANALYZE  SELECT * from userpref where username = 'vivek';
 QUERY PLAN

 Seq Scan on userpref  (cost=0.00..1.04 rows=1 width=70) (actual 
time=0.060..0.071 rows=1 loops=1)
   Filter: ((username)::text = 'vivek'::text)
 Total runtime: 0.216 ms
(3 rows)


It shows seq scan . It is not using the index perhaps. But I fail to understand 
why does it not use the index created? I have tried vacuuming the database, 
reindexing the table, running analyze command. 
Can anyone tell me what am I doing wrong?






With warm regards.

Vivek J. Joshi.

[EMAIL PROTECTED]
Trikon Electronics Pvt. Ltd.

All science is either physics or stamp collecting.
-- Ernest Rutherford




---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster