SLEEP() ফাংশন দিয়ে অপ্টিমাইজেশন টেস্ট
MySQL কি SELECT এবং GROUP BY-এ একই এক্সপ্রেশন দুবার এক্সিকিউট করে কিনা, তা টেস্ট করতে SLEEP() ফাংশন ব্যবহার করা যায়।
টেবিল তৈরি
mysql> CREATE TABLE sleepDemo (value INT);
mysql> INSERT INTO sleepDemo VALUES (40), (60), (60);
Case ১: এক্সপ্রেশন دوبার লিখলে (অপ্টিমাইজ হয় না)
mysql> SELECT value + SLEEP(3) FROM sleepDemo GROUP BY value + SLEEP(3);
+----------------+
| value+sleep(3) |
+----------------+
| 40 |
| 60 |
+----------------+
2 rows in set (9.00 sec)
৯ সেকেন্ড লাগলো (৩ রো × ৩ সেকেন্ড) — মানে এক্সপ্রেশন দুবার চলে।
Case ২: ALIAS ব্যবহার করে (অপ্টিমাইজ হয়)
mysql> SELECT value + SLEEP(3) AS v FROM sleepDemo GROUP BY v;
+------+
| v |
+------+
| 40 |
| 60 |
+------+
2 rows in set (9.00 sec)
এটাও ৯ সেকেন্ড লাগলো। MySQL ৮.০-এ এখনও কমন সাবএক্সপ্রেশন এলিমিনেশন (CSE) SELECT এবং GROUP BY-এ সম্পূর্ণরূপে অপ্টিমাইজ হয়নি।
নिष्कর্ষ: পারফরম্যান্সের জন্য এক্সপ্রেশন একবার ক্যালকুলেট করে আলিয়াস দিয়ে GROUP BY-এ ব্যবহার করা ভালো, যদিও বর্তমান ভার্সনে উভয়কেই রি-এভ্যালুয়েট করে।