Masamın her satırı için (cosn1) aynı sınıfın en yakın poligonuna olan mesafeyi hesaplamak için Postgis 2.0 yeni fonksiyonunu <-> (Geometry Distance Centroid) kullanmaya çalışıyorum.
Aşağıdaki kodu kullanmaya çalışıyordum:
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;
Ama sonra uyarıyı anlıyorum:
Not: Dizin yalnızca, geometrilerden birinin sabit olması durumunda başlar (bir alt sorguda / altta değil). örneğin 'SRID = 3005; POINT (1011102 450541)' :: a.geom yerine geometri
İndeks hiç kullanılmayacak ve sorgu kullanmadan önce neredeyse aynı zaman alacaktır:
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)
Biri bana sorgunun performansını iyileştirmeme izin veren bir geçici çözümü işaret edebilir mi?
Çok teşekkür ederim.