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

तीन अलग-अलग कॉलम में अधिकतम मान के आधार पर ऑर्डर करें

यह हो सकता है एक चुनिंदा क्वेरी में करना संभव हो (संभवतः case when . जैसी किसी चीज़ का उपयोग करना हालांकि मुझे यकीन नहीं है कि order by . में इसकी अनुमति है खंड स्वयं, डीबीएमएस के आधार पर वाईएमएमवी) लेकिन प्रति-पंक्ति गणनाओं का उपयोग करना शायद ही कभी एक अच्छा विचार है यदि आप चाहते हैं कि आपका डेटाबेस अच्छी तरह से स्केल हो जाए क्योंकि टेबल बड़े हो जाते हैं ("घोड़े की दौड़ में एक पैर वाले सुअर का प्रदर्शन नहीं है" , जैसा कि हमारे डीबीए में से एक ने इसे स्पष्ट रूप से कहा है)।

इस तरह की स्थितियों में, मैं अधिकतम रखने के लिए एक अतिरिक्त (अनुक्रमित) कॉलम सेट करता हूं और यह सुनिश्चित करता हूं कि उस नए कॉलम को अन्य तीन में से अधिकतम करने के लिए बाध्य करने के लिए एक इंसर्ट/अपडेट ट्रिगर का उपयोग करके डेटा अखंडता को बनाए रखा जाए।

चूंकि अधिकांश डेटाबेस टेबल लिखित की तुलना में कहीं अधिक बार पढ़े जाते हैं, यह सभी रीड्स में गणना की लागत को परिशोधित करता है। लागत केवल तभी वहन की जाती है जब डेटा अपडेट किया जाता है और जब से आप एकल, अनुक्रमित, कॉलम पर ऑर्डर कर रहे होते हैं, तब से क्वेरी बहुत तेज़ हो जाती हैं:

select f1, f2, f3 from t order by fmax desc;


  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. Neo4j - साइफर का उपयोग करके एक बाधा छोड़ें

  3. हाइबरनेट mysql

  4. एक महीने में हर दिन के लिए मूल्य कैसे प्राप्त करें

  5. सीधे mySQL कमांड लाइन के माध्यम से छवि अपलोड करें