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

Simple tilfældige prøver fra en SQL-database

Jeg tror, ​​den hurtigste løsning er

select * from table where rand() <= .3

Her er grunden til, at jeg synes, at dette burde gøre arbejdet.

  • Det vil oprette et tilfældigt tal for hver række. Tallet er mellem 0 og 1
  • Den evaluerer, om den pågældende række skal vises, hvis det genererede tal er mellem 0 og 0,3 (30%).

Dette antager, at rand() genererer tal i en ensartet fordeling. Det er den hurtigste måde at gøre dette på.

Jeg så, at nogen havde anbefalet den løsning, og de blev skudt ned uden bevis. her er, hvad jeg ville sige til det -

  • Dette er O(n), men der kræves ingen sortering, så det er hurtigere end O(n lg n)
  • mysql er meget i stand til at generere tilfældige tal for hver række. Prøv dette -

    vælg rand() fra INFORMATION_SCHEMA.TABLES grænse 10;

Da den pågældende database er mySQL, er dette den rigtige løsning.



  1. NULL i MySQL (Performance &Storage)

  2. Hvordan viser jeg de sidste forespørgsler udført på MySQL?

  3. Langsom forespørgsel ved brug af BESTIL EFTER

  4. T-SQL tirsdag #64:Én trigger eller mange?