Thread: Indexes not working, please help.

Indexes not working, please help.

From
Ricardo Ryoiti Sugawara Junior
Date:
    Hi there.

    The table medidas has the following structure:

                                        Table "medidas"
   Column   |            Type             |                      Modifiers
------------+-----------------------------+-----------------------------------------------------
 cod        | bigint                      | not null default
nextval('"medidas_cod_seq"'::text)
 cod_ponto  | bigint                      |
 data_hora  | timestamp without time zone |
 valor      | smallint                    |
 tipo_ponto | bytea                       |
 unidade    | bytea                       |
Indexes: teste
Primary key: medidas_pkey

    I populated it with 8859000 entries using many "100 inserts"
blocks transactions. Inserting data on the table is no problem.
    Althought I created the "teste" index ( create index teste on
medidas (cod) ), vacuumed and analyzed the database, pgsql still doesn't
use indexes.

explain select * from medidas where cod = 1231232;
---
NOTICE:  QUERY PLAN:

Seq Scan on medidas  (cost=0.00..197590.50 rows=1 width=36)
---

    I've read all the documentation I found, but I couldn't figure out
what's happening. Setting "enable_seqscan" to false doesn't help either.
    This machine I'm working on won't be the production server, but
it's not that slow machine (P3 1GHz, 384MB, ATA 100) and without indexes
working, that select mentioned above takes almost 60 seconds to run...

    []'s
    Ricardo.





Re: Indexes not working, please help.

From
Tom Lane
Date:
Ricardo Ryoiti Sugawara Junior <suga@netbsd.com.br> writes:
>  cod        | bigint                      | not null default

> explain select * from medidas where cod = 1231232;

Try "1231232::bigint".

            regards, tom lane



Re: Indexes not working, please help.

From
Ricardo Junior
Date:
---
Index Scan using medidas_pkey on medidas  (cost=0.00..3.01 rows=1
width=36)
---

    Indeed, it got a bit faster... :D

    Thanks!

    []'s
    Ricardo.

On Fri, 5 Jul 2002, Tom Lane wrote:

> Ricardo Ryoiti Sugawara Junior <suga@netbsd.com.br> writes:
> >  cod        | bigint                      | not null default
>
> > explain select * from medidas where cod = 1231232;
>
> Try "1231232::bigint".
>
>             regards, tom lane
>




Re: Indexes not working, please help.

From
Antonis Antoniou
Date:
Ricardo Ryoiti Sugawara Junior wrote:

>         Hi there.
>
>         The table medidas has the following structure:
>
>                                         Table "medidas"
>    Column   |            Type             |                      Modifiers
> ------------+-----------------------------+-----------------------------------------------------
>  cod        | bigint                      | not null default
> nextval('"medidas_cod_seq"'::text)
>  cod_ponto  | bigint                      |
>  data_hora  | timestamp without time zone |
>  valor      | smallint                    |
>  tipo_ponto | bytea                       |
>  unidade    | bytea                       |
> Indexes: teste
> Primary key: medidas_pkey
>
>         I populated it with 8859000 entries using many "100 inserts"
> blocks transactions. Inserting data on the table is no problem.
>         Althought I created the "teste" index ( create index teste on
> medidas (cod) ), vacuumed and analyzed the database, pgsql still doesn't
> use indexes.
>
> explain select * from medidas where cod = 1231232;
> ---
> NOTICE:  QUERY PLAN:
>
> Seq Scan on medidas  (cost=0.00..197590.50 rows=1 width=36)
> ---
>
>         I've read all the documentation I found, but I couldn't figure out
> what's happening. Setting "enable_seqscan" to false doesn't help either.
>         This machine I'm working on won't be the production server, but
> it's not that slow machine (P3 1GHz, 384MB, ATA 100) and without indexes
> working, that select mentioned above takes almost 60 seconds to run...
>
>

Hi,
Is your index on the attribute cod? If not then try this:
CREATE INDEX teste ON medidas (cod);

Thanks
Antonis




Re: Indexes not working, please help.

From
Ricardo Junior
Date:
    Antonis,

    That was not the case, it appears that PostgreSQL have problems
matching the type on the table and on the queries. For instance, cod is a
bigserial primary key, so it does has a index but when you query it
without specifying ::bigint after the value, I don't know why, PostgreSQL
won't use it's indexes.

    With the "serial" type it works perfectly.

    Thanks anyway,

    Ricardo.

On Fri, 5 Jul 2002, Antonis Antoniou wrote:

> Hi,
> Is your index on the attribute cod? If not then try this:
> CREATE INDEX teste ON medidas (cod);
>
> Thanks
> Antonis