Re: partial indexed not being used.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Ron Arts <ron(dot)arts(at)neonova(dot)nl>
Cc: Michael Fuhr <mike(at)fuhr(dot)org>, pgsql-novice(at)postgresql(dot)org
Subject: Re: partial indexed not being used.
Date: 2007-02-12 14:21:34
Message-ID: 6801.1171290094@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Ron Arts <ron(dot)arts(at)neonova(dot)nl> writes:
> # select count(*) from cdr where billed = false;
> count
> -------
> 3
> (1 row)

>> =# explain select cdr.* from cdr where billed = false order by calldate;
>>
>> QUERY PLAN
>> -------------------------------------------------------------------
>> Sort (cost=37448.75..37526.94 rows=31273 width=465)
>> Sort Key: calldate
>> -> Seq Scan on cdr (cost=0.00..20323.81 rows=31273 width=465)
^^^^^^^^^^
>> Filter: (billed = false)

You haven't ANALYZEd this table (lately, or perhaps ever). The planner
is thus working with a default selectivity estimate (which I think is
50% for a bool column --- that seems to match your numbers anyway), and
that leads it to the conclusion that a seqscan is the right thing.
Which it would indeed be, if half the table has to be retrieved.

regards, tom lane

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Ron Arts 2007-02-12 16:31:57 Re: partial indexed not being used.
Previous Message Andreas 2007-02-12 14:11:50 Re: Help whit schemas