आपके पोस्टग्रेज और / या sql विशेषज्ञता के आधार पर आपके पास कई विकल्प हैं:
यदि आप किसी विशेष अड़चन को मार रहे हैं, तो यह पता लगाने के लिए EXPLAIN कमांड के माध्यम से क्वेरी का विश्लेषण करें । चेतावनी: कभी-कभी EXPLAIN के आउटपुट को समझना मुश्किल हो सकता है
यदि आप अपेक्षा करते हैं कि तालिका 1 में जियोमेट्री का अधिकांश या महत्वपूर्ण भाग मल्टीप्लायगोन को नहीं काटता है, तो आप एक सरल बहुभुज के खिलाफ प्रारंभिक स्थिति को लागू करने की कोशिश कर सकते हैं (अर्थात छोटे टुकड़ों में मल्टीप्लगॉन को तोड़कर) और फिर केवल भारी मल्टीप्लगॉन चौराहे पर चलाएं। उन परिणामों। एक उदाहरण के लिए नीचे देखें।
यदि और केवल यदि सीपीयू टोंटी है (यानी सर्वर अटक कंप्यूटिंग चौराहों है) मैं dully आप एक बड़ा, तेज, और अधिक शक्तिशाली सीपीयू पाने का सुझाव देते हैं या अमेज़न के EC2 बंद एक बार की उच्च सीपीयू उदाहरण किराए पर लेने और इसे नष्ट जब आप कर रहे हैं किया हुआ
आइटम 2 के लिए उदाहरण क्वेरी:
SELECT DISTINCT ON (st1.userid) st1.userid ,ST_AsText(st1.position), st1.timestamp
FROM (
select userid, position, timestamp from table1
WHERE ST_Intersects ( YOUR_MULTIPOL_BOUNDS_HERE,position)
) as st1
WHERE ST_Intersects ( ST_GeomFromText('a multiypolygon geom goes here',4326),st1.position)
ORDER BY st1.userid, st1.timestamp desc
प्रदर्शन में सुधार करने के लिए आप एक तालिका के रूप में subselect st1 को अस्थायी रूप से उत्प्रेरित कर सकते हैं ताकि आप इसे अनुक्रमित कर सकें।
@Nicklas टिप्पणियों में इंगित करना सही है जो सुझाव 2 के लिए उदाहरण के लिए मदद नहीं करनी चाहिए। वह सही है, लेकिन मुझे लगता है कि मैं (आंशिक रूप से) भी सही हूं।
वास्तव में ऐसा लगता है कि एक बहुत ही समान प्रश्न पूछा गया था (और उत्तर दिया) अभी पिछले नवंबर में पोस्टगिस एमएल:
http://postgis.refractions.net/pipermail/postgis-users/2011-November/031344.html
और पता चलता है कि वास्तव में बहुभुज को तोड़ने का सुझाव है ताकि सूचकांक सबसे प्रभावी रूप से झूठे चौराहों को छान सके जो अन्यथा एक सरल सीमा जांच द्वारा ट्रिगर हो जाएंगे।