sql >> Databasteknik >  >> RDS >> Mysql

MySQL väljer 10 slumpmässiga rader från 600 000 rader snabbt

Ett bra inlägg som hanterar flera ärenden, från enkla, till luckor, till olikformiga med luckor.

http://jan.kneschke.de/projects/mysql/order- by-rand/

För de flesta allmänna fall, så här gör du:

SELECT name
  FROM random AS r1 JOIN
       (SELECT CEIL(RAND() *
                     (SELECT MAX(id)
                        FROM random)) AS id)
        AS r2
 WHERE r1.id >= r2.id
 ORDER BY r1.id ASC
 LIMIT 1

Detta förutsätter att fördelningen av id är lika och att det kan finnas luckor i id-listan. Se artikeln för mer avancerade exempel



  1. SQL Server:Skillnaden mellan PARTITION BY och GROUP BY

  2. Guide till designdatabas för kalenderhändelse och påminnelse i MySQL

  3. En fastighetsbyrådatamodell

  4. Få en lista över datum mellan två datum