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

Django क्वेरी प्राकृतिक सॉर्ट

जहां तक ​​​​मुझे पता है, इसके लिए कोई सामान्य Django समाधान नहीं है। आप एक आईडी/प्रश्न_कोड लुकअप संरचना बनाकर अपनी स्मृति उपयोग को कम कर सकते हैं और अपने डीबी प्रश्नों को सीमित कर सकते हैं

from natsort import natsorted
question_code_lookup = Question.objects.values('id','question_code')
ordered_question_codes = natsorted(question_code_lookup, key=lambda i: i['question_code'])

यह मानते हुए कि आप उन परिणामों को पृष्ठबद्ध करना चाहते हैं, जिन्हें आप फिर क्रमित_प्रश्न_कोड को स्लाइस कर सकते हैं, उन सभी प्रश्नों को पुनः प्राप्त करने के लिए एक अन्य क्वेरी निष्पादित करें जिनकी आपको आवश्यकता है उन्हें उस स्लाइस में उनकी स्थिति के अनुसार क्रमबद्ध करें

#get the first 20 questions
ordered_question_codes = ordered_question_codes[:20]
question_ids = [q['id'] for q in ordered_question_codes]
questions = Question.objects.filter(id__in=question_ids)
#put them back into question code order
id_to_pos = dict(zip((question_ids), range(len(question_ids))))
questions = sorted(questions, key = lambda x: id_to_pos[x.id])

यदि लुकअप संरचना अभी भी बहुत अधिक मेमोरी का उपयोग करती है, या सॉर्ट करने में बहुत अधिक समय लेती है, तो आपको कुछ और उन्नत करना होगा। यह निश्चित रूप से एक विशाल डेटासेट के लिए अच्छा नहीं होगा




  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. स्काला और MySQL JDBC ड्राइवर

  3. MySQLdb.cursor.execute एकाधिक प्रश्नों को नहीं चला सकता

  4. MySQL से JSON डेटा कैसे प्राप्त करें?

  5. PHP/MySQL टिकट प्रतिक्रिया - डेटाबेस में ई-मेल repsonse स्टोर करें?