उत्तर प्रश्न में है:
यहां कीवर्ड "अभिव्यक्ति" . है . आप ORDER BY
. में भावों का उपयोग कर सकते हैं खंड।
ORDER BY -order_line_groups.sequence DESC
एक अंकगणितीय अभिव्यक्ति है और "हाइफ़न" एक हाइफ़न नहीं बल्कि एक माइनस है; एक यूनरी माइनस मैथमेटिकल ऑपरेटर।
यह कैसे काम करता है?
परिणाम के संबंध में, यह अपेक्षा के अनुरूप काम करता है:
-
यदि कॉलम का प्रकार
. के बराबर हैorder_line_groups.sequence
एक संख्यात्मक प्रकार है या एक तारीख और समय का प्रकार (वे आंतरिक रूप से संख्याओं के रूप में भी संग्रहीत होते हैं) तो ऋण वापस पंक्तियों के क्रम को उलट देता है। यह खंडORDER BY order_line_groups.sequence ASC
-
यदि कॉलम का प्रकार स्ट्रिंग प्रकार तब MySQL मानों को बदलने का प्रयास करता है कॉलम से संख्याओं तक (क्योंकि घटाव एक अंकगणितीय ऑपरेशन है और इसे स्ट्रिंग्स के लिए परिभाषित नहीं किया गया है)। जब MySQL स्ट्रिंग्स को नंबरों में कनवर्ट करता है तो यह पहले कैरेक्टर पर रुक जाता है जो कि डिजिट नहीं है। आपके द्वारा कॉलम
order_line_groups.sequence
. में संग्रहीत डेटा के आधार पर , इसके कम या ज्यादा स्ट्रिंग मान संख्या0
. में बदल जाएंगे ।
गति के संबंध में, जैसा कि प्रश्न में दिए गए प्रलेखन पृष्ठ में बताया गया है, MySQL ORDER BY
को हल करने के लिए अनुक्रमणिका का उपयोग नहीं कर सकता है . यह क्वेरी को धीमा कर देता है।
निष्कर्ष
ORDER BY -order_line_groups.sequence
का उपयोग करना क्वेरी को धीमा कर देता है। अधिक, यह परिणाम सेट को सॉर्ट करने का एक अच्छा तरीका प्रदान नहीं करता है जब कॉलम का प्रकार sequence
एक स्ट्रिंग प्रकार है।