Slowness in testing any crossing straight lines in a layer
Regina Obe
lr at pcorp.us
Thu Feb 5 10:38:04 PST 2026
What does
SELECT postgis_full_version();
Return. I suppose doing a cross join there does result in an order of 6,728,232,002 checks.
You definitely have a spatial index on your geometry column right?
What timing do you get with below, just want to rule out some performance issue with ST_Crosses
SELECT a.*, b.gad_globalid
FROM _tmp_fishbone a INNER JOIN _tmp_fishbone b ON (a.gad_globalid < b.gad_globalid AND ST_Intersects(a.geom,b.geom) );
From: Bo Guo <bo.guo at gisticinc.com>
Sent: Thursday, February 5, 2026 12:59 PM
To: Regina Obe <lr at pcorp.us>
Cc: PostGIS Users Discussion <postgis-users at lists.osgeo.org>
Subject: Re: Slowness in testing any crossing straight lines in a layer
Hi Regina!
Your query returned "116002, 2".
I ran the three variations of the ST_Crosses query, and here are the performance results.
SELECT a.*, b.gad_globalid
FROM _tmp_fishbone a INNER JOIN _tmp_fishbone b ON (a.gad_globalid <> b.gad_globalid AND ST_Crosses(a.geom,b.geom) )
-- 33 minutes
SELECT a.*, b.gad_globalid
FROM _tmp_fishbone a INNER JOIN _tmp_fishbone b ON (a.gad_globalid < b.gad_globalid AND ST_Crosses(a.geom,b.geom) )
-- 17 minutes
SELECT a.*, b.gad_globalid
FROM _tmp_fishbone a INNER JOIN _tmp_fishbone b ON (a.gad_globalid < b.gad_globalid AND a.geom && b.geom AND ST_Crosses(a.geom,b.geom) )
-- 17 minutes
It seems that 17 mins is the best I can get?
Thanks!
On Thu, Feb 5, 2026 at 8:06 AM Regina Obe <lr at pcorp.us <mailto:lr at pcorp.us> > wrote:
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 <http://a.id> = b.id <http://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 <http://a.id> <> b.id <http://b.id> AND ST_Crosses(a.geom,b.geom) )
From: Bo Guo <bo.guo at gisticinc.com <mailto:bo.guo at gisticinc.com> >
Sent: Thursday, February 5, 2026 7:53 AM
To: PostGIS Users Discussion <postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org> >
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20260205/dcf20802/attachment.htm>
More information about the postgis-users
mailing list