Mysql
 sql >> Base de données >  >> RDS >> Mysql

Échantillons aléatoires simples à partir d'une base de données SQL

Je pense que la solution la plus rapide est

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

Voici pourquoi je pense que cela devrait faire l'affaire.

  • Cela créera un nombre aléatoire pour chaque ligne. Le nombre est compris entre 0 et 1
  • Il évalue s'il faut afficher cette ligne si le nombre généré est compris entre 0 et 0,3 (30 %).

Cela suppose que rand() génère des nombres dans une distribution uniforme. C'est le moyen le plus rapide de le faire.

J'ai vu que quelqu'un avait recommandé cette solution et ils ont été abattus sans preuve... voici ce que je dirais à cela -

  • C'est O(n) mais aucun tri n'est requis donc c'est plus rapide que O(n lg n)
  • mysql est très capable de générer des nombres aléatoires pour chaque ligne. Essayez ceci -

    sélectionnez rand() dans INFORMATION_SCHEMA.TABLES limite 10 ;

Comme la base de données en question est mySQL, c'est la bonne solution.