Tôi nghĩ giải pháp nhanh nhất là
select * from table where rand() <= .3
Đây là lý do tại sao tôi nghĩ điều này nên làm công việc.
- Nó sẽ tạo một số ngẫu nhiên cho mỗi hàng. Con số nằm trong khoảng từ 0 đến 1
- Nó đánh giá xem có hiển thị hàng đó hay không nếu số được tạo nằm trong khoảng từ 0 đến .3 (30%).
Điều này giả định rằng rand () đang tạo ra các số trong một phân phối đồng đều. Đây là cách nhanh nhất để thực hiện việc này.
Tôi thấy rằng ai đó đã đề xuất giải pháp đó và họ bị bắn hạ mà không có bằng chứng .. đây là những gì tôi sẽ nói với điều đó -
- Đây là O (n) nhưng không cần sắp xếp nên nhanh hơn O (n lg n)
-
mysql rất có khả năng tạo ra các số ngẫu nhiên cho mỗi hàng. Hãy thử điều này -
chọn rand () từ giới hạn 10 của INFORMATION_SCHEMA.TABLES;
Vì cơ sở dữ liệu được đề cập là mySQL, đây là giải pháp phù hợp.