MySQL-এ টেবিল থেকে র্যান্ডমলি একটি রেকর্ড নির্বাচন করতে ORDER BY RAND() LIMIT 1 ব্যবহার করা সবচেয়ে সাধারণ পদ্ধতি।
উদাহরণ
১. টেবিল তৈরি করুন
mysql> CREATE TABLE DemoTable1581 (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20)
-> );
২. ডেটা ইনসার্ট করুন
mysql> INSERT INTO DemoTable1581(StudentName) VALUES('Chris'), ('Bob'), ('Sam'), ('Mike'), ('Carol');
৩. সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable1581;
আউটপুট: Id 1-5: Chris, Bob, Sam, Mike, Carol
৪. র্যান্ডম এক রেকর্ড নির্বাচন করুন
mysql> SELECT * FROM DemoTable1581 ORDER BY RAND() LIMIT 1;
৫. ফলাফল (উদাহরণ: Mike পাওয়া গেল)
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 4 | Mike |
+-----------+-------------+
পারফরম্যান্স সতর্কতা (বড় টেবিলের জন্য):
ORDER BY RAND()পুরো টেবিল স্ক্যান করে এবং টেম্পোরারি টেবিলে সর্ট করে - O(N log N)। লক্ষ রো হলে খুব স্লো।- অপ্টিমাইজড পদ্ধতি (দুটি কোয়েরি):
SELECT COUNT(*) FROM DemoTable1581;-> totalRows- অ্যাপ্লিকেশন লেভেলে র্যান্ডম অフジেট জেনারেট করুন:
offset = FLOOR(RAND() * totalRows) SELECT * FROM DemoTable1581 LIMIT offset, 1;(ইনডেক্স ব্যবহার করে দ্রুত)۔
- অন্য পদ্ধতি: প্রাইমারি কী রেঞ্জ জানলে
WHERE Id >= (SELECT FLOOR(RAND() * (MAX(Id) - MIN(Id) + 1)) + MIN(Id)) ORDER BY Id LIMIT 1(গ্যাপ হলে কাজ নাও করতে পারে)।
ছোট টেবিলে (১০০০ রো নিচে): ORDER BY RAND() LIMIT 1 পুরোপুরি ঠিক আছে।