Penso che la soluzione più veloce sia
select * from table where rand() <= .3
Ecco perché penso che questo dovrebbe fare il lavoro.
- Creerà un numero casuale per ogni riga. Il numero è compreso tra 0 e 1
- Valuta se visualizzare quella riga se il numero generato è compreso tra 0 e .3 (30%).
Ciò presuppone che rand() stia generando numeri in una distribuzione uniforme. È il modo più rapido per farlo.
Ho visto che qualcuno aveva raccomandato quella soluzione e sono stati abbattuti senza prove.. ecco cosa direi -
- Questo è O(n) ma non è richiesto alcun ordinamento quindi è più veloce di O(n lg n)
-
mysql è molto capace di generare numeri casuali per ogni riga. Prova questo -
seleziona rand() da INFORMATION_SCHEMA.TABLES limite 10;
Poiché il database in questione è MySQL, questa è la soluzione giusta.