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

geodjango . में दूरी (संपूर्ण तालिका) के आधार पर ऑर्डर करना कितना कुशल है?

यदि आप उस तालिका की प्रत्येक प्रविष्टि को दूरी के आधार पर छाँटना चाहते हैं तो यह अपेक्षा के अनुरूप धीमी होगी और ऐसा कुछ भी नहीं किया जा सकता है (जिसकी जानकारी मुझे इस समय और मेरी जानकारी से है।)!

आप इन चरणों का पालन करके और कुछ अनुमान लगाकर अपनी गणना को अधिक कुशल बना सकते हैं:

  1. स्थानिक अनुक्रमण सक्षम करें अपनी मेजों पर। GeoDjango में ऐसा करने के लिए, का अनुसरण करें। दस्तावेज़ निर्देश और उन्हें अपने मॉडल में फ़िट करें:

  2. अब आप कुछ तार्किक बाधाओं के साथ अपनी क्वेरी को सीमित कर सकते हैं:

    पूर्व: मेरा उपयोगकर्ता अपनी वर्तमान स्थिति से 50 किमी से अधिक दूरी के लोगों की तलाश नहीं करेगा।

  3. dwithin स्थानिक लुकअप जो ऊपर उल्लिखित स्थानिक अनुक्रमण का उपयोग करता है ए> , इसलिए यह बहुत तेज़ है।

  4. अंत में दूरी लागू करें शेष पंक्तियों के अनुसार क्रमित करें।

अंतिम क्वेरी इस तरह दिख सकती है:

current_location = me.location
people = People.objects.filter(
    location__dwithin=(current_location, D(km=50))
).annotate(
    distance=Distance('location', current_location)
).order_by('distance')

पी.एस: एक कस्टम पेजिनेशन प्रयास बनाने के बजाय, django विचारों के लिए प्रदान की गई पेजिनेशन विधियों का उपयोग करना अधिक कुशल है:

या आप Django Rest Framework का उपयोग कर सकते हैं और इसके पेजिनेशन का उपयोग कर सकते हैं:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक पोस्टग्रेज सुपरयुसर क्या है

  2. Django में स्कीमा का उपयोग कैसे करें?

  3. पोस्टग्रेस्क्ल में डेटा एन्क्रिप्ट करें

  4. कई अलग-अलग तालिकाओं के लिए एकल ट्रिगर प्रक्रिया लागू करें

  5. पोस्टग्रेज:वास्तव में 'उपयोगकर्ता से चुनें' क्वेरी क्या कर रही है?