यह हो सकता है एक चुनिंदा क्वेरी में करना संभव हो (संभवतः case when
. जैसी किसी चीज़ का उपयोग करना हालांकि मुझे यकीन नहीं है कि order by
. में इसकी अनुमति है खंड स्वयं, डीबीएमएस के आधार पर वाईएमएमवी) लेकिन प्रति-पंक्ति गणनाओं का उपयोग करना शायद ही कभी एक अच्छा विचार है यदि आप चाहते हैं कि आपका डेटाबेस अच्छी तरह से स्केल हो जाए क्योंकि टेबल बड़े हो जाते हैं ("घोड़े की दौड़ में एक पैर वाले सुअर का प्रदर्शन नहीं है" , जैसा कि हमारे डीबीए में से एक ने इसे स्पष्ट रूप से कहा है)।
इस तरह की स्थितियों में, मैं अधिकतम रखने के लिए एक अतिरिक्त (अनुक्रमित) कॉलम सेट करता हूं और यह सुनिश्चित करता हूं कि उस नए कॉलम को अन्य तीन में से अधिकतम करने के लिए बाध्य करने के लिए एक इंसर्ट/अपडेट ट्रिगर का उपयोग करके डेटा अखंडता को बनाए रखा जाए।
चूंकि अधिकांश डेटाबेस टेबल लिखित की तुलना में कहीं अधिक बार पढ़े जाते हैं, यह सभी रीड्स में गणना की लागत को परिशोधित करता है। लागत केवल तभी वहन की जाती है जब डेटा अपडेट किया जाता है और जब से आप एकल, अनुक्रमित, कॉलम पर ऑर्डर कर रहे होते हैं, तब से क्वेरी बहुत तेज़ हो जाती हैं:
select f1, f2, f3 from t order by fmax desc;