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 protected]