Sto usando il seguente Nearest Neighbor Query in PostGIS:K-Nearest Neighbor Query in PostGIS
SELECT g1.gid g2.gid FROM points as g1, polygons g2
WHERE g1.gid <> g2.gid
ORDER BY g1.gid, ST_Distance(g1.the_geom,g2.the_geom)
LIMIT k;
Ora, che ho creato indici su the_geom così come colonna gid su entrambi i tavoli, questa query è richiede molto più tempo di altre query spaziali che coinvolgono join spaziali in bianco e nero due tabelle.
C'è un modo migliore per trovare i vicini più vicini a K? Sto usando PostGIS.
E, un'altra domanda che sta prendendo un tempo insolitamente lungo, nonostante la creazione di indici sulla colonna di geometria è:
select g1.gid , g2.gid from polygons as g1 , polygons as g2
where st_area(g1.the_geom) > st_area(g2.the_geom) ;
credo, queste query arent beneficiato di indici GIST, ma perché?
considerando che la presente interrogazione:
select a.polyid , sum(length(b.the_geom)) from polygon as a , roads as b
where st_intersects(a.the_geom , b.the_geom);
restituisce il risultato dopo un certo tempo, nonostante che coinvolge "strade" da tavolo che è molto più grande di poligoni o punti tavolo e coinvolgono anche gli operatori spaziali più complesse.
Presumo che la tua domanda è come velocizzare la query? Puoi mostrarci i risultati di 'EXPLAIN ANALYZE SELECT ....'? In questo modo forse potremmo sapere cosa sta succedendo lì. – Thilo
No, la mia domanda è perché questa query richiede più di 5 volte il tempo impiegato dalla terza query sopra !! –
ok, dopo aver atteso molto, per IInd Query ricevo il seguente messaggio di errore: "memoria esaurita per risultato della query" e esecuzione della query terminata. Qualcuno può far luce su questo? –