Hello,

When doing a cross join (my_fishbones a, my_fishbones b), you multiply a by b, 
so 100K by 100K.
If your table has 3 records : 1, 2, 3, the cross join outputs : 1|1, 1|2, 1|3, 
2|1, 2|2, 2|3, 3|1, 3|2, 3|3.
There are unnecessary crosses.

Add a condition : a.id > b.id to traverse only the half of the matrix.

Kind regards

De : Bo Guo [mailto:[email protected]]
Envoyé : jeudi 5 février 2026 13:53
À : PostGIS Users Discussion <[email protected]>
Objet : [ScanMail-Spam] 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
Ce message est établi à usage exclusif de son destinataire.
Toute utilisation ou diffusion, partielle ou totale, doit être préalablement 
autorisée.

Tout message électronique est susceptible d'altération et son intégrité ne peut 
être assurée.
L'expéditeur décline toute responsabilité au titre de ce message s'il a été 
modifié ou falsifié.

Si vous n'êtes pas destinataire de ce message, merci de le détruire et 
d'avertir l'expéditeur.

Ville et Eurométropole de Strasbourg

Reply via email to