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

डेटाबेस में रिकॉर्ड्स के समूह पर सॉर्ट-ऑर्डर स्टोर करने का सबसे प्रभावी तरीका क्या है?

केवल integer का उपयोग करने के बारे में क्या? कॉलम जो आदेश को परिभाषित करता है? डिफ़ॉल्ट रूप से आप संख्या * 1000 निर्दिष्ट करते हैं, जैसे 1000, 2000, 3000.... और यदि आप 1000 और 2000 के बीच 3000 को स्थानांतरित करते हैं तो आप इसे 1500 में बदल देते हैं। इसलिए ज्यादातर मामलों में आपको अन्य नंबरों को बिल्कुल भी अपडेट करने की आवश्यकता नहीं होती है। मैं इस दृष्टिकोण का उपयोग करता हूं और यह अच्छी तरह से काम करता है। आप double . का भी उपयोग कर सकते हैं लेकिन फिर आपके पास सटीक और गोलाई त्रुटियों के बारे में नियंत्रण नहीं है, इसलिए इसका उपयोग न करें।

तो एल्गोरिथम ऐसा दिखेगा :मान लें कि आप B को A के बाद स्थिति में ले जाते हैं। A के बगल में रिकॉर्ड का क्रम देखने के लिए पहले प्रदर्शन करें। यदि यह A के क्रम से कम से कम +2 अधिक है तो आप बीच में फ़िट होने के लिए B का क्रम सेट करें। लेकिन अगर यह सिर्फ +1 अधिक है (ए के बाद कोई जगह नहीं है), तो आप बी के सीमावर्ती रिकॉर्ड का चयन करते हैं यह देखने के लिए कि इस तरफ कितनी जगह है, 2 से विभाजित करें और फिर इस मान को ए के बीच सभी रिकॉर्ड्स के क्रम में जोड़ें और बी. बस!

(ध्यान दें कि आपको किसी भी एल्गोरिदम के लिए लेनदेन/लॉकिंग का उपयोग करना चाहिए जिसमें एक से अधिक प्रश्न हों, इसलिए यह इस मामले पर भी लागू होता है। सबसे आसान तरीका InnoDB लेनदेन का उपयोग करना है।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कमांड लाइन से MySQL डेटाबेस, उपयोगकर्ता और तालिकाओं का प्रबंधन कैसे करें

  2. MySQL में लेन-देन-सुरक्षित SEQUENCE का अनुकरण करना

  3. मैं दो MySQL तालिकाओं को कैसे मर्ज कर सकता हूं?

  4. यदि मान शून्य है तो डिफ़ॉल्ट रूप से शून्य कॉलम में डालें

  5. क्यों SQLSTATE [HY000]:सामान्य त्रुटि?