Re: Why index used/not used

From: Mike G <mike(at)thegodshalls(dot)com>
To: Anton Maksimenkov <engineer(at)hlebprom(dot)ru>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Why index used/not used
Date: 2004-07-21 05:37:13
Message-ID: 20040721053713.GA32748@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

hello,

Try reading through the pgsql-performance mailing list. Generally the database needs to be vacuumed and analyzed to update the stats usually for the planner to make the correct choices.

Mike

On Wed, Jul 21, 2004 at 11:00:06AM +0600, Anton Maksimenkov wrote:
> Hello.
>
> Explain.
> I have table "traf_raw" contains field "sip_id" (integer). This field
> indexed with "CREATE INDEX traf_raw_sip ON traf_raw (sip_id)".
>
> Question.
> When I try to get different rows postgres use index with one "sip_id"
> and not use index with another "sip_id". I don't understand why it is
> happen, but with more complex queries Seq Scan is so slowly.
>
> Example.
> With "sip_id='19'" there many rows in table, with "sip_id='29'" there
> is no rows.
>
> cnupm=> ANALYZE traf_raw;
> ANALYZE
> cnupm=> EXPLAIN ANALYZE SELECT * FROM traf_raw WHERE sip_id='19' LIMIT
> 10 OFFSET 100000;
> QUERY PLAN
>
> ---------------------------------------------------------------------------------------------------------------------
> Limit (cost=5230.95..5230.99 rows=1 width=56) (actual
> time=2505.89..2505.89 rows=0 loops=1)
> -> Seq Scan on traf_raw (cost=0.00..5230.99 rows=10808 width=56)
> (actual time=0.04..2490.02 rows=10977 loops=1)
> Filter: (sip_id = 19)
> Total runtime: 2505.95 msec
> (4 rows)
>
> cnupm=> EXPLAIN ANALYZE SELECT * FROM traf_raw WHERE sip_id='29' LIMIT
> 10 OFFSET 100000;
> QUERY PLAN
>
> ---------------------------------------------------------------------------------------------------------------------------------
> Limit (cost=391.39..392.70 rows=1 width=56) (actual time=43.08..43.08
> rows=0 loops=1)
> -> Index Scan using traf_raw_sip on traf_raw (cost=0.00..392.70
> rows=99 width=56) (actual time=43.07..43.07 rows=0 loops=1)
> Index Cond: (sip_id = 29)
> Total runtime: 43.16 msec
> (4 rows)
>
> --
> engineer
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
> joining column's datatypes do not match

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Mike G 2004-07-21 06:24:54 Re: Insert images through ASP
Previous Message Vinay Jain 2004-07-21 05:06:50 Aligned Output!!