Re: Query taking seq scan on a table - Mailing list pgsql-admin

From Jeff Janes
Subject Re: Query taking seq scan on a table
Date
Msg-id CAMkU=1zeEd2Q1yLKBDaKC1DW1UVxtYJiAX+ifp6mwodTOGqCnw@mail.gmail.com
Whole thread Raw
In response to Re: Query taking seq scan on a table  (Shrikant Bhende <shrikantpostgresql@gmail.com>)
Responses Re: Query taking seq scan on a table  (Shrikant Bhende <shrikantpostgresql@gmail.com>)
List pgsql-admin
On Mon, Sep 21, 2020 at 12:51 AM Shrikant Bhende <shrikantpostgresql@gmail.com> wrote:
Also I have tried to add a GIN index for better text search as below, 

CREATE INDEX idx_fnmae_lname_gin_composite ON wldbowner.member USING gin
(lower((((fname)::text || ' '::text) || (lname)::text)) rdsadmin.gin_trgm_ops);


You index does not match your query:

((lower(unaccent_string((lname)::text)) ~~ 'info%'::text) AND (lower(unaccent_string((fname)::text)) ~~ 'travel%'::text))
 
Your index is not passing the columns through unaccent_string, and it is concatenating the columns while the query is treating them separately.  You need to make the index (or indexes, as you might want one for each column) match the query.

If the wildcard is always at the end of the search-pattern strings, you could instead use btree indexes with text_pattern_ops.

Cheers,

Jeff

pgsql-admin by date:

Previous
From: zaid khan
Date:
Subject: Issue in streaming replication after increasing swap.
Next
From: Tom Aizenberg
Date:
Subject: How do I configure pgAdmin to use a fixed port?