Re: Request to help on Query improvement suggestion.

From: Marlene Villanueva <villanuevamarlene906(at)gmail(dot)com>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: devchef2020 d <devchef2020(at)gmail(dot)com>, pgsql-admin <pgsql-admin(at)postgresql(dot)org>, pgsql-general(at)postgresql(dot)org, pgsql-performance(at)postgresql(dot)org
Subject: Re: Request to help on Query improvement suggestion.
Date: 2020-07-11 17:15:27
Message-ID: CAA0OsZKUrH_O5AL3VahoYeUVArpwtzcAfeQiR_en=D5LNE+jYA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-general pgsql-performance

On Sun, May 24, 2020, 11:48 PM Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
wrote:

> On Fri, 2020-05-22 at 16:15 +0530, devchef2020 d wrote:
> > PostgreSQL : 9.5.15
>
> > Created Indexes on column parental_path:
> > =================================
> >
> > CREATE INDEX cable_pair_parental_path_idx
> > ON SCHEMA.TABLE_NAME
> > USING btree
> > (md5(parental_path) COLLATE pg_catalog."default");
> >
> > CREATE INDEX cable_pair_parental_path_idx_fulltext
> > ON SCHEMA.TABLE_NAME
> > USING gist
> > (parental_path COLLATE pg_catalog."default");
>
> > SELECT seq_no + 1 FROM SCHEMA.TABLE_NAME WHERE (parental_path LIKE
> '%,sheath--' || cable_seq_id || ',%' OR parental_path LIKE 'sheath--' ||
> cable_seq_id || ',%' OR parental_path LIKE '%,sheath--' ||
> > cable_seq_id OR parental_path = 'sheath--' || cable_seq_id) ORDER BY
> seq_no DESC LIMIT 1;
> >
> > Explain Plan:
> > =============
> >
> > Limit (cost=108111.60..108111.61 rows=1 width=4) (actual
> time=4597.605..4597.605 rows=0 loops=1)
> > Output: ((seq_no + 1)), seq_no
> > Buffers: shared hit=2967 read=69606 dirtied=1
> > -> Sort (cost=108111.60..108113.09 rows=595 width=4) (actual
> time=4597.603..4597.603 rows=0 loops=1)
> > Output: ((seq_no + 1)), seq_no
> > Sort Key: TABLE_NAME.seq_no DESC
> > Sort Method: quicksort Memory: 25kB
> > Buffers: shared hit=2967 read=69606 dirtied=1
> > -> Seq Scan on SCHEMA.TABLE_NAME (cost=0.00..108108.63 rows=595
> width=4) (actual time=4597.595..4597.595 rows=0 loops=1)
> > Output: (seq_no + 1), seq_no
> > Filter: ((TABLE_NAME.parental_path ~~
> '%,sheath--64690,%'::text) OR (TABLE_NAME.parental_path ~~
> 'sheath--64690,%'::text) OR (TABLE_NAME.parental_path ~~
> '%,sheath--64690'::text) OR
> > (TABLE_NAME.parental_path = 'sheath--64690'::text))
> > Rows Removed by Filter: 1930188
> > Buffers: shared hit=2967 read=69606 dirtied=1
>
> An index on an expression can only be used if the expression is exactly
> the same as on one
> side of an operator in a WHERE condition.
>
> So your only chance with that query is to hope for a bitmap OR with an
> index on "parental path".
>
> Two things to try:
>
> 1) CREATE INDEX ON table_name (parental_path text_pattern_ops);
>
> 2) CREATE EXTENSION pg_trgm;
> CREATE INDEX ON table_name USING GIN (parental_path gin_trgm_ops);
>
> Yours,
> Laurenz Albe
> --
> Cybertec | https://www.cybertec-postgresql.com
>
>
>
>

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Sujith Kumar.S 2020-07-12 17:59:10 pglogical shared_preload_library Loading issue in EDB PPAS - PostgreSQL
Previous Message David Steele 2020-07-10 20:05:24 Re: OK to delete old .history files from archive?

Browse pgsql-general by date

  From Date Subject
Next Message luis.roberto 2020-07-11 17:20:24 Join optimization
Previous Message Adrian Klaver 2020-07-11 15:23:38 Re: Issue with timestamp without time zone datatype with default value as now()/localtimestamp

Browse pgsql-performance by date

  From Date Subject
Next Message Henrique Montenegro 2020-07-13 14:23:16 Sudden insert performance degradation
Previous Message Bruce Momjian 2020-07-01 19:59:58 Re: Recommended value for pg_test_fsync