Мисля, че най-бързото решение е
select * from table where rand() <= .3
Ето защо смятам, че това трябва да свърши работа.
- Ще създаде произволно число за всеки ред. Числото е между 0 и 1
- Оценява дали да се покаже този ред, ако генерираното число е между 0 и .3 (30%).
Това предполага, че rand() генерира числа в равномерно разпределение. Това е най-бързият начин да направите това.
Видях, че някой е препоръчал това решение и са го свалили без доказателство.. ето какво бих казал на това -
- Това е O(n), но не се изисква сортиране, така че е по-бързо от O(n lg n)
-
mysql е много способен да генерира произволни числа за всеки ред. Опитайте това -
изберете rand() от INFORMATION_SCHEMA.TABLES ограничение 10;
Тъй като въпросната база данни е mySQL, това е правилното решение.