PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

किसी दिए गए बिंदु से एक निश्चित दायरे में अंक खोजने का सबसे कारगर तरीका

बिंदुओं को खोजने के लिए एक बफर बनाना एक निश्चित संख्या है क्योंकि (1) बफर का प्रतिनिधित्व करने वाली ज्यामिति बनाने का ओवरहेड, और (2) पॉइंट-इन-पॉलीगॉन गणना एक साधारण दूरी की गणना की तुलना में बहुत कम कुशल है।

आप स्पष्ट रूप से (देशांतर, अक्षांश) डेटा के साथ काम कर रहे हैं, इसलिए आपको इसे एक उपयुक्त कार्टेशियन समन्वय प्रणाली में परिवर्तित करना चाहिए, जिसकी माप की इकाई 10,000 की दूरी के समान हो। यदि वह दूरी मीटर में है, तो आप तालिका से बिंदु को geography . पर भी डाल सकते हैं और सीधे (लंबे, अक्षांश) निर्देशांक पर गणना करें। चूंकि आप केवल उन बिंदुओं की पहचान करना चाहते हैं जो निर्दिष्ट दूरी के भीतर हैं, आप ST_DWithin() समारोह अतिरिक्त गति के लिए गोले पर गणना के साथ (बहुत उच्च अक्षांशों पर या बहुत लंबी दूरी पर ऐसा न करें):

SELECT id, point 
FROM my_table 
WHERE ST_DWithin(point::geography,
                 ST_GeogFromText('POINT(-116.768347 33.911404)'),
                 10000, false);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल 4/पोस्टग्रेस्क्ल - किसी अन्य तालिका डेटा के आधार पर किसी तालिका पर डेटा डालें (बाद_क्रिएट)

  2. पीएल/पीजीएसक्यूएल में उपयोग कर एक चर में क्वेरी परिणाम स्टोर करें

  3. मुझे तालिका से 88 यादृच्छिक पंक्तियों का चयन करने के लिए एक फ़ंक्शन की आवश्यकता है (डुप्लिकेट के बिना)

  4. एक कंडीशन में उर्फ ​​​​कोलेस का उपयोग करना:कोलेस (अधिकतम (मामला जब मूल्य तब मूल्य) उपनाम के रूप में)

  5. Refcursor चर के मान का उपयोग करके FETCH कैसे करें