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

MySQL-এ ORDER BY RAND() LIMIT 1 ব্যবহার করে র‍্যান্ডম রেকর্ড নির্বাচন করুন

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)। লক্ষ রো হলে খুব স্লো।
  • অপ্টিমাইজড পদ্ধতি (দুটি কোয়েরি):
    1. SELECT COUNT(*) FROM DemoTable1581; -> totalRows
    2. অ্যাপ্লিকেশন লেভেলে র‍্যান্ডম অフジেট জেনারেট করুন: offset = FLOOR(RAND() * totalRows)
    3. 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 পুরোপুরি ঠিক আছে।

  1. PHP স্ক্রিপ্ট দিয়ে MySQL ডেটাবেস সিলেক্ট করা

  2. MySQL ভিউ ড্রপ করা (DROP VIEW)

  3. MySQL-এ একটি ডেটাবেস থেকে অন্য ডেটাবেসে টেবিল কপি করা

  4. MySQL-এ শেষ ১০টি সারি কীভাবে বের করবেন?