Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีสุ่มข้อมูลและจำกัดจำนวนแถวใน MySQL ที่มีประสิทธิภาพ

ใช้ ORDER BY RAND() สุ่มลำดับ แล้ว LIMIT n จำกัดจำนวนแถว

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> Value INT
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO DemoTable VALUES(100), (300), (600), (700), (1000);

แสดงข้อมูล

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-------+
| Value |
+-------+
| 100   |
| 300   |
| 600   |
| 700   |
| 1000  |
+-------+

คำสั่งสุ่ม 4 แถว

mysql> SELECT * FROM DemoTable ORDER BY RAND() LIMIT 4;

ผลลัพธ์ (ตัวอย่าง - จะสุ่มต่างกันทุกครั้ง):

+-------+
| Value |
+-------+
| 1000  |
| 600   |
| 100   |
| 700   |
+-------+

หมายเหตุ: ORDER BY RAND() อาจช้าบนตารางขนาดใหญ่ (full table scan) สำหรับตารางใหญ่ควรใช้วิธีอื่น เช่นสุ่ม ID ในช่วง MIN-MAX แล้ว JOIN