sql >> Databasteknik >  >> RDS >> Mysql

Enkla slumpmässiga prover från en SQL-databas

Jag tror att den snabbaste lösningen är

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

Här är anledningen till att jag tycker att det här borde göra jobbet.

  • Det kommer att skapa ett slumptal för varje rad. Siffran är mellan 0 och 1
  • Den utvärderar om den raden ska visas om numret som genereras är mellan 0 och 0,3 (30%).

Detta förutsätter att rand() genererar tal i en enhetlig fördelning. Det är det snabbaste sättet att göra detta.

Jag såg att någon hade rekommenderat den lösningen och de blev skjutna utan bevis.. här är vad jag skulle säga till det -

  • Detta är O(n) men ingen sortering krävs så det är snabbare än O(n lg n)
  • mysql är mycket kapabel att generera slumptal för varje rad. Prova detta -

    välj rand() från INFORMATION_SCHEMA.TABLES gräns 10;

Eftersom databasen i fråga är mySQL är detta rätt lösning.



  1. Hur kan jag använda regex för att dela en sträng med en sträng som avgränsare?

  2. Ta reda på varför ett e-postmeddelande inte kunde skickas i SQL Server (T-SQL)

  3. JSON_LENGTH() – Returnera längden på ett JSON-dokument i MySQL

  4. SQL VÄLJ IN