Saya pikir solusi tercepat adalah
select * from table where rand() <= .3
Inilah mengapa saya pikir ini harus melakukan pekerjaan.
- Ini akan membuat nomor acak untuk setiap baris. Angkanya antara 0 dan 1
- Ini mengevaluasi apakah akan menampilkan baris tersebut jika angka yang dihasilkan antara 0 dan .3 (30%).
Ini mengasumsikan bahwa Rand() menghasilkan angka dalam distribusi seragam. Ini adalah cara tercepat untuk melakukannya.
Saya melihat seseorang telah merekomendasikan solusi itu dan mereka ditembak jatuh tanpa bukti.. inilah yang akan saya katakan untuk itu -
- Ini adalah O(n) tetapi tidak diperlukan penyortiran sehingga lebih cepat daripada O(n lg n)
-
mysql sangat mampu menghasilkan angka acak untuk setiap baris. Coba ini -
pilih rand() dari INFORMATION_SCHEMA.TABLES batas 10;
Karena database yang dimaksud adalah mySQL, ini adalah solusi yang tepat.