Sto cercando di utilizzare Postgis 2.0 nuova funzione <-> (Geometry Distance Centroid) per calcolare, per ogni riga della mia tabella (cosn1), la distanza dal poligono più vicino della stessa classe.
Stavo cercando di usare il seguente codice:
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;
Ma poi realizzo l'avvertimento:
Nota: L'indice entra in funzione solo se una delle geometrie è una costante (non in una sottoquery / cte). es. 'SRID = 3005; POINT (1011102 450541)' :: geometria anziché a.geom
Ciò significa che l'indice non verrà utilizzato affatto e la query impiegherà quasi lo stesso tempo di prima dell'uso:
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)
Qualcuno può indicarmi una soluzione alternativa che mi consente di migliorare le prestazioni della mia query?
Grazie mille.