sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Blanda ett begränsat frågeresultat?

Du kan använda rand() , men prestandan är fruktansvärd

select * from users order by rand() limit 5; <-- slow

Jag skulle föreslå, lagra listan över alla användar-ID i en serialisera array och cache till en diskfil. (uppdatering regelbundet)

Så du kan avserialisera den tillbaka med PHP och använda PHP array_rand för att välja 5 slumpmässiga användare.

För att hämta hela informationen kan du göra

select * from users where user_id in(...); <-- very fast


  1. Typen eller namnområdets namn "oracle" kunde inte hittas fel

  2. Oracle - hämta tabellnamn från sql-text

  3. enkel Oracle select-satssyntax

  4. Hur gör man:Rengör en mysql InnoDB-lagringsmotor?