কম্পিউটার টিউটোরিয়াল

MySQL-এ SELECT এবং HAVING/GROUP BY-এ কমন সাবএক্সপ্রেশন অপ্টিমাইজেশন টেস্ট করা (SLEEP ফাংশন)

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-এ ব্যবহার করা ভালো, যদিও বর্তমান ভার্সনে উভয়কেই রি-এভ্যালুয়েট করে।

  1. MySQL-এ একাধিকবার অনুপস্থিত নামের র‍্যান্ডম একটি রো বের করা

  2. GROUP BY, HAVING ও ORDER BY একসাথে ব্যবহার করে নির্দিষ্ট রেঞ্জের সমষ্টি মান ওয়ালা রেকর্ড দেখানোর MySQL কোয়েরি

  3. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  4. MySQL-এ UNION SELECT এবং IN ক্লজ একসাথে ব্যবহার