Mysql
 sql >> Database >  >> RDS >> Mysql

Esempi casuali semplici da un database SQL

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.