Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Proste próbki losowe z bazy danych Sql

Myślę, że najszybszym rozwiązaniem jest

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

Oto dlaczego uważam, że to powinno wystarczyć.

  • Stworzy losową liczbę dla każdego wiersza. Liczba wynosi od 0 do 1
  • Ocenia, czy wyświetlić ten wiersz, jeśli wygenerowana liczba wynosi od 0 do 0,3 (30%).

Zakłada się, że rand() generuje liczby w rozkładzie jednolitym. To najszybszy sposób, aby to zrobić.

Widziałem, że ktoś polecił to rozwiązanie i zostali zestrzeleni bez dowodu.. oto co bym na to powiedział -

  • To jest O(n), ale nie jest wymagane sortowanie, więc jest szybsze niż O(n lg n)
  • mysql jest bardzo zdolny do generowania liczb losowych dla każdego wiersza. Spróbuj tego -

    wybierz rand() z INFORMATION_SCHEMA.TABLES limit 10;

Ponieważ daną bazą danych jest mySQL, jest to właściwe rozwiązanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić plik do bazy danych MySQL?

  2. JSON_VALID() – Testuj poprawność JSON w MySQL

  3. Jaki jest odpowiednik DATALENGTH() w MySQL?

  4. Jak wyświetlić wiersze tabeli z bazy danych (php)

  5. Pozostałe w PostgreSQL, MS SQL Server, MySQL i SQLite