btree index on a char(8) field - Mailing list pgsql-general

From Frank Mandarino
Subject btree index on a char(8) field
Date
Msg-id 99Oct3.195125edt.115201@sky.risca.com
Whole thread Raw
List pgsql-general
I am in the process of migrating a database from Postgres95 2.0 to
PostgreSQL 6.5.2 on a Debian 2.1 system.

In a few of the tables, a char8 type field was used for the primary key,
so I converted them to type char(8).  The tables also had a btree index
built on the primary key using char8_ops, which I converted to char_ops.

Now I am finding that explain is indicating that the index is never
used, even for queries that I would have thought would run faster using
an index.

For example:

main=> \d vendor
Table    = vendor
+----------------------------------+----------------------------------+-------+
|              Field               |              Type                | Length|
+----------------------------------+----------------------------------+-------+
| ven_code                         | char()                           |     8 |
| initials                         | char()                           |     2 |
| tax_number                       | text                             |   var |
| check_payable_to                 | text                             |   var |
| other_name                       | text                             |   var |
| address_1                        | text                             |   var |
| address_2                        | text                             |   var |
| city                             | text                             |   var |
| ps                               | text                             |   var |
| country                          | text                             |   var |
| postal_code                      | text                             |   var |
| work_phone                       | text                             |   var |
| home_phone                       | text                             |   var |
| fax_phone                        | text                             |   var |
| bank_code                        | text                             |   var |
| trans_num                        | text                             |   var |
| bank_acc_num                     | text                             |   var |
| payment_restriction_flag         | char()                           |     1 |
| debt_reason_msg                  | text                             |   var |
| debt_caution_msg                 | text                             |   var |
| comments_1                       | text                             |   var |
| comments_2                       | text                             |   var |
| special_order                    | char()                           |     1 |
| status                           | char()                           |     1 |
+----------------------------------+----------------------------------+-------+

main=> select count(*) from vendor;
count
-----
 9905
(1 row)

main=> create index ven_code_idx on vendor using btree (ven_code char_ops);
CREATE
main=> vacuum analyze;
VACUUM
main=> explain select ven_code,initials,city from vendor where ven_code='P8979';
NOTICE:  QUERY PLAN:

Seq Scan on vendor  (cost=738.86 rows=2 width=36)

EXPLAIN
main=>


Under Postgres95, the index was used from such queries.  Can anyone tell
me why the index isn't being used in PostgreSQL?

Thanks,
../fam
--
Frank A. Mandarino
fam@risca.com


pgsql-general by date:

Previous
From: randyboy
Date:
Subject: Re: [PHP3] Re: PostgreSQL vs Mysql comparison
Next
From: The Hermit Hacker
Date:
Subject: Re: [GENERAL] 6.5.2 patch