परीक्षण के लिए, sleep() फ़ंक्शन का उपयोग करें।
केस 1 -
सिंटैक्स इस प्रकार है -
SELECT yourColumnName + SLEEP(yourIntegerValue) FROM yourTableName GROUP BY yourColumnName + SLEEP(yourIntegerValue);
केस 2 - आप एक और सिंटैक्स उपयोग कर सकते हैं जो इस प्रकार है -
SELECT yourColumnName + SLEEP(yourIntegerValue) AS anyAliasName FROM yourTableName GROUP BY yourAliasName;
उपरोक्त सिंटैक्स को समझने के लिए, आइए एक टेबल बनाते हैं। टेबल बनाने की क्वेरी इस प्रकार है -
mysql> create table sleepDemo -> ( -> value int -> ); Query OK, 0 rows affected (1.25 sec)
insert कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड्स डालें। क्वेरी इस प्रकार है -
mysql> insert into sleepDemo values(40); Query OK, 1 row affected (0.18 sec) mysql> insert into sleepDemo values(60); Query OK, 1 row affected (0.19 sec) mysql> insert into sleepDemo values(60); Query OK, 1 row affected (0.10 sec)
select स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड्स प्रदर्शित करें। क्वेरी इस प्रकार है -
mysql> select *from sleepDemo;
यहां आउटपुट है -
+-------+ | value | +-------+ | 40 | | 60 | | 60 | +-------+ 3 rows in set (0.00 sec)
SELECT और HAVING/GROUP BY क्लॉज के बीच सामान्य उप-अभिव्यक्तियों को समाप्त करने की क्वेरी यहां है।
केस 1 - क्वेरी इस प्रकार है -
mysql> SELECT value + SLEEP(3) -> FROM sleepDemo -> GROUP BY value + SLEEP(3);
आउटपुट इस प्रकार है -
+----------------+ | value + SLEEP(3) | +----------------+ | 40 | | 60 | +----------------+ 2 rows in set (9.00 sec)
उपरोक्त क्वेरी प्रत्येक मान के लिए 9 सेकंड लेती है (40 के लिए 3 सेकंड, 60 के लिए 3 सेकंड, 60 के लिए 3 सेकंड)।
केस 2 - क्वेरी इस प्रकार है -
mysql> SELECT value + SLEEP(3) AS v -> FROM sleepDemo -> GROUP BY v;
आउटपुट इस प्रकार है -
+------+ | v | +------+ | 40 | | 60 | +------+ 2 rows in set (9.00 sec)
निष्कर्ष: दोनों केस 9 सेकंड लेते हैं (3 मान × 3 सेकंड), साबित करते हुए कि MySQL (कम से कम परीक्षण किए गए संस्करण में) सामान्य उप-अभिव्यक्तियों को समाप्त नहीं करता -SLEEP(3)का मूल्यांकन प्रत्येक पंक्ति के लिए दो बार किया जाता है (एक बार SELECT सूची में, एक बार GROUP BY में)। समाधान: केस 2 की तरह एलियास (AS v) का उपयोग करें औरGROUP BY vलिखें। MySQL 8.0+ में ऑप्टिमाइज़र कुछ मामलों में बेहतर हो सकता है, लेकिन एलियास का उपयोग करना सुरक्षित और पोर्टेबल अभ्यास है।