How many records do you have in a / b
What does this query return and point counts also impact performance SELECT COUNT(*), MAX(ST_NPoints(geom)) FROM my_fishbones Also I’d think you’d want to leave out compare with a.id = b.id I also think the && is redundant as crosses already has a built in index check SELECT a.*, b.id <http://b.id> FROM my_fishbones a INNER JOIN my_fishbones b ON (a.id <> b.id AND ST_Crosses(a.geom,b.geom) ) From: Bo Guo <[email protected]> Sent: Thursday, February 5, 2026 7:53 AM To: PostGIS Users Discussion <[email protected]> Subject: Slowness in testing any crossing straight lines in a layer Hi There! I have 100K straight lines in a layer - my_fishbone - with GIST indexed. However, the following SQL query did not finish within 20 minutes! Could you advise on any improvement ideas? SELECT a.*, b.id <http://b.id> FROM my_fishbones a, my_fishbones b WHERE a.geom && b.geom AND ST_Crosses(a.geom, b.geom) Thanks in advance! Bo Guo
