Estoy tratando de usar Postgis 2.0 nueva función <-> (Geometry Distance Centroid) para calcular, para cada fila de mi tabla (cosn1), la distancia al polígono más cercano de la misma clase.
Estaba tratando de usar el siguiente código:
WITH index_query AS (
SELECT g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN
FROM "cosn1" As g1, "cosn1" As g2
WHERE g1.gid <> g2.gid AND g1.class = g2.class
ORDER BY g1.gid, g1.the_geom <-> g2.the_geom)
SELECT DISTINCT ON (ref_gid) ref_gid, ENN
FROM index_query
ORDER BY ref_gid, ENN;
Pero luego me doy cuenta de la advertencia:
Nota: El índice solo se activa si una de las geometrías es una constante (no en una subconsulta / cte). por ejemplo, 'SRID = 3005; POINT (1011102 450541)' :: geometría en lugar de a.geom
Lo que significa que el índice no se usará en absoluto, y la consulta tomará casi el mismo tiempo que antes de usar:
SELECT DISTINCT ON(g1.gid) g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN
FROM "cosn1" As g1, "cosn1" As g2
WHERE g1.gid <> g2.gid AND g1.class = g2.class
ORDER BY g1.gid, ST_Distance(g1.the_geom,g2.the_geom)
¿Alguien puede señalarme una solución alternativa que me permita mejorar el rendimiento de mi consulta?
Muchas gracias.