मेरे पास दो टेबल हैं जिन्हें मैं छेड़छाड़ करना चाहता हूं। पहली तालिका लगभग 50 मिलियन अंक का प्रतिनिधित्व करती है और दूसरा दुनिया के सभी देशों की बहुभुज परत है। मैं उन पॉलीगॉन के साथ छेड़छाड़ करने वाले सभी बिंदु प्राप्त करना चाहता हूं।पोस्टग्रेस्क्ल स्पेटियल क्वेरी बहुत धीमी
SELECT d.id, d.geom
FROM export d, world_boundaries b
WHERE (b.cntry_name = 'UK')
AND d.date_inserted >= '2012-06-01'
AND d.geom && b.wkb_geometry
AND intersects(d.geom, b.wkb_geometry);
यह क्वेरी बहुत सरल है लेकिन इसे चलाने में 4 घंटे से अधिक समय लगता है। मेरे पास प्रत्येक तालिका के लिए ज्यामिति कॉलम पर निर्मित GIST इंडेक्स हैं और VACUUM ने उन्हें दोनों को विश्लेषण किया है। अभी भी कोई प्रदर्शन वृद्धि नहीं है। मैं पोस्टग्रेस 8.4 और पोस्टजीआईएस 1.5 के साथ CENTOS 6 चला रहा हूं। क्या कोई चीजों को गति देने के बारे में कुछ प्रकाश डाल सकता है? 1000 से 10000 रिकॉर्ड्स तक क्वेरी को सीमित करते समय मुझे परिणाम बहुत जल्दी मिलते हैं। जब मैं पूर्ण परिणाम सेट को पकड़ने की कोशिश करता हूं तो यह ड्रैग होता है। विचार?
अद्यतन: अब मुझे लगता है कि मुझे अपनी प्रक्रिया को इस प्रक्रिया में पहले चरण के रूप में परिशोधित करना है। मुझे इस
select astext(st_envelope(wkb_geometry)) as e
from world_borders
where cntry_name = 'UK'
जैसे लिफ़ाफ़ा मिलता है, अब संपूर्ण क्वेरी के हिस्से के रूप में इसे शामिल/निष्पादित करने का सबसे प्रभावी तरीका क्या है?
हालिया रिलीज में से प्रत्येक ने जीआईएसटी और जीआईएन इंडेक्स में सुधार किया है। आप एक नई बड़ी रिलीज के लिए अपग्रेड पर विचार करना चाह सकते हैं। 9.2 बीटा रिलीज पर आपकी समस्या का प्रयास करने के लायक भी हो सकता है, क्योंकि इसमें एसपी-जीआईएसटी शामिल है। http://www.postgresql.org/docs/9.2/static/spgist-intro.html – kgrittn