मैं अपनी तालिका की प्रत्येक पंक्ति (cosn1), उसी वर्ग के निकटतम बहुभुज की दूरी की गणना करने के लिए, पोस्टगिस 2.0 नए फ़ंक्शन <-> (जियोमेट्री डिस्टेंस सेंट्रोइड) का उपयोग करने की कोशिश कर रहा हूं।
मैं निम्नलिखित कोड का उपयोग करने की कोशिश कर रहा था:
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;
लेकिन तब मुझे चेतावनी का एहसास हुआ:
नोट: यदि केवल एक ज्यामितीय (एक उपश्रेणी / cte में नहीं) है तो इंडेक्स केवल किक करता है। जैसे 'SRID = 3005; POINT (1011102 450541)' :: a.geom के बजाय ज्यामिति
इसका मतलब है कि इंडेक्स अभ्यस्त बिल्कुल भी नहीं होगा, और क्वेरी का उपयोग करने से पहले लगभग एक ही समय लगेगा:
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)
क्या कोई मुझे एक वैकल्पिक हल बता सकता है जो मुझे अपनी क्वेरी के प्रदर्शन में सुधार करने की अनुमति देता है?
आपका बहुत बहुत धन्यवाद।