MySQL स्टेटमेंट्स का वास्तविक निष्पादन थोड़ा मुश्किल है। हालांकि, मानक क्वेरी में तत्वों की व्याख्या के क्रम को निर्दिष्ट करता है। यह मूल रूप से आपके द्वारा निर्दिष्ट क्रम में है, हालांकि मुझे लगता है कि HAVING
और GROUP BY
SELECT
. के बाद आ सकता है :
FROM
खंडWHERE
खंडSELECT
खंडGROUP BY
खंडHAVING
खंडORDER BY
खंड
यह समझने के लिए महत्वपूर्ण है कि प्रश्नों को कैसे पार्स किया जाता है। आप SELECT
. में परिभाषित कॉलम उपनाम का उपयोग नहीं कर सकते हैं WHERE
. में क्लॉज, उदाहरण के लिए, क्योंकि WHERE
SELECT
. से पहले पार्स किया जाता है . दूसरी ओर, ऐसा उपनाम ORDER BY
. में हो सकता है खंड।
वास्तविक निष्पादन के लिए, यह वास्तव में अनुकूलक पर छोड़ दिया गया है। उदाहरण के लिए:
. . .
GROUP BY a, b, c
ORDER BY NULL
और
. . .
GROUP BY a, b, c
ORDER BY a, b, c
दोनों पर ORDER BY
. का प्रभाव है बिल्कुल भी निष्पादित नहीं किया जा रहा है -- और इसलिए GROUP BY
. के बाद निष्पादित नहीं किया जा रहा है (पहले मामले में, प्रभाव GROUP BY
. से छँटाई को हटाना है और दूसरे में प्रभाव GROUP BY
. के अलावा और कुछ नहीं करना है पहले से ही करता है)।