If you are transforming the geom in your query this could be the issue. I prefer to create views in PG, rather than using GeoServer queries but I believe it is essentially the same. If I create a PG view where I am altering the geom, basically any st_ function or aggrigation, this results in poor performance as a view does not have a spatial index. Because the geom was altered the spatial index of the parents table doesn't apply to the view. Therefore, my solution is to create a secondary table (not a view) with a spatial index. You can use a function to keep the tables in sync if the source table is altered.
Vera On Fri., May 22, 2020, 4:51 a.m. postgann2020 s, <postgann2...@gmail.com> wrote: > Hi Team, > > Thanks for your support. > > Could someone please suggest on the below query. > > One of the query which was created on GIS data is taking a long time and > even it is not taking the index as well. I have included all the required > details for reference. > > Database Stack: > =============== > PostgreSQL : 9.5.15 > Postgis: 2.2.7 > > Table Structure: > =================== > > ALTER TABLE SCHEMA.TABLE_NAME ADD COLUMN parental_path text; > > 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"); > > Sample data in "parental_path" column: > ====================================== > > > 'route--2309421/2951584/3373649/2511322/1915187/2696397/2623291/2420708/2144348/2294454,circuit--88458/88460,sheath--8874' > > Actual Query: > ============= > > 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 > > Please share your suggestion. > Thanks & Regards, > PostgAnn. > _______________________________________________ > Geoserver-users mailing list > > Please make sure you read the following two resources before posting to > this list: > - Earning your support instead of buying it, but Ian Turton: > http://www.ianturton.com/talks/foss4g.html#/ > - The GeoServer user list posting guidelines: > http://geoserver.org/comm/userlist-guidelines.html > > If you want to request a feature or an improvement, also see this: > https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer > > > Geoserver-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/geoserver-users >
_______________________________________________ Geoserver-users mailing list Please make sure you read the following two resources before posting to this list: - Earning your support instead of buying it, but Ian Turton: http://www.ianturton.com/talks/foss4g.html#/ - The GeoServer user list posting guidelines: http://geoserver.org/comm/userlist-guidelines.html If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer Geoserver-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geoserver-users