<div dir="ltr"><div><br clear="all"></div><div><font color="#696969" face="arial, helvetica, sans-serif"><b>Versions:  </b></font>POSTGIS="3.6.1 f533623" [EXTENSION] PGSQL="180" GEOS="3.10.2-CAPI-1.16.0" PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=<a href="https://cdn.proj.org" target="_blank">https://cdn.proj.org</a> USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 8.2.1) LIBXML="2.9.13" LIBJSON="0.15" LIBPROTOBUF="1.3.3" WAGYU="0.5.0 (Internal)" (core procs from "3.6.0 4c1967d" need upgrade) TOPOLOGY (topology procs from "3.6.0 4c1967d" need upgrade)</div><div><br></div><div>Yes, this is the Explain Graphics:</div><div><img src="cid:ii_mla0olmy0" alt="image.png" width="490" height="342"></div><div>The Intersects call - 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) ); took over 15 minutes before pgAdmin session terminated. I will try it again in a bit.</div><div> </div><div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 5, 2026 at 11:38 AM Regina Obe <<a href="mailto:lr@pcorp.us" target="_blank">lr@pcorp.us</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div lang="EN-US"><div><p class="MsoNormal">What does <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">SELECT postgis_full_version();<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Return.  I suppose doing a cross join there does result in an order of  <span style="font-size:11pt;font-family:"Aptos Narrow",sans-serif;color:black">6,728,232,002 checks.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:"Aptos Narrow",sans-serif;color:black"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:"Aptos Narrow",sans-serif;color:black">You definitely have a spatial index on your geometry column right?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:"Aptos Narrow",sans-serif;color:black"><u></u> <u></u></span></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">What timing do you get with below, just want to rule out some performance issue with ST_Crosses<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">SELECT a.*, b.gad_globalid<br>FROM _tmp_fishbone a INNER JOIN  _tmp_fishbone b ON (a.gad_globalid <  b.gad_globalid AND ST_Intersects(a.geom,b.geom) );<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt"><div><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in"><p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"> Bo Guo <<a href="mailto:bo.guo@gisticinc.com" target="_blank">bo.guo@gisticinc.com</a>> <br><b>Sent:</b> Thursday, February 5, 2026 12:59 PM<br><b>To:</b> Regina Obe <<a href="mailto:lr@pcorp.us" target="_blank">lr@pcorp.us</a>><br><b>Cc:</b> PostGIS Users Discussion <<a href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a>><br><b>Subject:</b> Re: Slowness in testing any crossing straight lines in a layer<u></u><u></u></span></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">Hi Regina!  <u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Your query returned "116002, 2".<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I ran the three variations of the ST_Crosses query, and here are the performance results.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">SELECT a.*, b.gad_globalid<br>FROM _tmp_fishbone a INNER JOIN  _tmp_fishbone b ON (a.gad_globalid <> b.gad_globalid AND ST_Crosses(a.geom,b.geom) )<br>-- 33 minutes<br><br>SELECT a.*, b.gad_globalid<br>FROM _tmp_fishbone a INNER JOIN  _tmp_fishbone b ON (a.gad_globalid < b.gad_globalid AND ST_Crosses(a.geom,b.geom) )<br>-- 17 minutes<br><br>SELECT a.*, b.gad_globalid<br>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) )<br>-- 17 minutes<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">It seems that 17 mins is the best I can get?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks!<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Thu, Feb 5, 2026 at 8:06<span style="font-family:Arial,sans-serif"> </span>AM Regina Obe <<a href="mailto:lr@pcorp.us" target="_blank">lr@pcorp.us</a>> wrote:<u></u><u></u></p></div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in"><div><div><div><p class="MsoNormal">How  many records do you have in  a / b<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">What does this query return and point counts also impact performance<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">SELECT  COUNT(*),  MAX(ST_NPoints(geom))<u></u><u></u></p><p class="MsoNormal">FROM my_fishbones<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Also I’d think you’d want to leave out compare with <a href="http://a.id" target="_blank">a.id</a> = <a href="http://b.id" target="_blank">b.id</a><u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I also think the && is redundant as crosses already has a built in index check<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal" style="margin-bottom:12pt">SELECT a.*, <a href="http://b.id" target="_blank">b.id</a><br>FROM my_fishbones a INNER JOIN  my_fishbones b ON (<a href="http://a.id" target="_blank">a.id</a> <> <a href="http://b.id" target="_blank">b.id</a> AND ST_Crosses(a.geom,b.geom) )<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt"><div><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in"><p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"> Bo Guo <<a href="mailto:bo.guo@gisticinc.com" target="_blank">bo.guo@gisticinc.com</a>> <br><b>Sent:</b> Thursday, February 5, 2026 7:53 AM<br><b>To:</b> PostGIS Users Discussion <<a href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a>><br><b>Subject:</b> Slowness in testing any crossing straight lines in a layer</span><u></u><u></u></p></div></div><p class="MsoNormal"> <u></u><u></u></p><div><div><p class="MsoNormal">Hi There!<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">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?<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">SELECT a.*, <a href="http://b.id" target="_blank">b.id</a><br>FROM my_fishbones a, my_fishbones b<br>WHERE a.geom && b.geom <br>  AND ST_Crosses(a.geom, b.geom)<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Thanks in advance!<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Bo Guo<u></u><u></u></p></div></div></div></div></div></div></blockquote></div></div></div></div></div></blockquote></div>