Subject: Re: How to use index in simple select

From: Adrian Klaver <[email-masked]>
Date: Sat, 29 Nov 2025 09:27:43 -0800

On 11/28/25 14:57, Andrus wrote:
> Hi!
> 
> Table has index on name column:
> 
>          CREATE TABLE firma2.klient
>          (
>              kood character(12) primary key,
>               nimi character(100),
>             ...
>          );
> 
>         CREATE INDEX IF NOT EXISTS klient_nimi_idx
>          ON firma2.klient USING btree
>          (nimi COLLATE pg_catalog."default" ASC NULLS LAST)
>          TABLESPACE pg_default;
> 
> Database settings have default values:
> 
>      enable_indexonlyscan       on
>      enable_indexscan           on
>      enable_indexonlyscan       on
>      enable_indexscan           on
> 
> Query
> 
>      SELECT * FROM firma2.klient WHERE nimi='John';
> 
> Runs slowly.
> 
>      analyze firma2.klient;
>      explain analyze select * from firma2.klient where nimi='John'
> 
> Shows that index is not used:
> 
>      "Seq Scan on klient  (cost=0.00..2287976.20 rows=1 width=4002) 
> (actual time=12769.987..12769.988 rows=0 loops=1)"
>      "  Filter: (nimi = 'John'::bpchar)"
>      "  Rows Removed by Filter: 849971"
>      "Planning Time: 4.751 ms"
>      "Execution Time: 12770.029 ms"
> 
> How to force Postgres to use index? It probably worked long time but 
> suddenly stopped working today.
> Re-started whole windows server but problem persists.
> 
> Using
> 
> PostgreSQL 17.5 on x86_64-windows, compiled by msvc-19.43.34808, 64-bit
> 
> in Windows Server 2022 vers 21H2
> 
> Andrus.
> 
> 
> Posted also in
> 
> https://stackoverflow.com/questions/79832965/how-to-use-index-in-simple- 
> select
> 
> 

Seems to be already answered:

"It looks like reindex table firma2.klient restored index scan. create 
index concurrently was used when lot of transactions using this table 
where running"

-- 
Adrian Klaver
[email-masked]

---

From: Andrus <[email-masked]>
Date: Sat, 29 Nov 2025 19:47:23 +0200

Hi!

> index concurrently was used when lot of transactions using this table 
Is it possible that reindex changes query from sequential scan to use 
index ?

Andrus.

---

From: Adrian Klaver <[email-masked]>
Date: Sat, 29 Nov 2025 09:56:31 -0800

> Is it possible that reindex changes query from sequential scan to use 

More likely it was one of the build index concurrently caveats detailed 
here:

https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY