[postgis-users] Increase KNN efficiency

Vispo Leblanc vispoleblanc at gmail.com
Wed May 30 14:07:19 PDT 2018


Hello PostGIS users,

I am looking for a way to increase the speed of my query with KNN.

I have two tables with millions of points in each table. I would like to
find the nearest neighbor (only one) of my points in table A with my points
in table B.

I wrote the following query:

WITH index_query as (
  SELECT
    t1.id,
    t1.geom AS geom,
    t2.geom AS geom2,
    t1.geom <-> t2.geom AS distance
  FROM research_scrapper.table1 t1,
      research_scrapper.table2 t2
  ORDER BY t1.geom <-> t2.geom
)
SELECT tbl.cas_id, tbl.geom
FROM index_query tbl
INNER JOIN
    (
        SELECT geom2,
               MIN(distance) as distance
        FROM index_query
        GROUP BY geom2
    )tbl1
    ON tbl1.geom_generated=tbl.geom_generated
    AND tbl1.distance = tbl.distance

This is taking forever, would you have any suggestions on how to increase
the efficiency?

Thanks for your help,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20180530/2065c600/attachment.html>


More information about the postgis-users mailing list