quick selection of a random row from a large table in mysql

前端 未结 24 2203
旧时难觅i
旧时难觅i 2020-11-22 09:30

What is a fast way to select a random row from a large mysql table?

I\'m working in php, but I\'m interested in any solution even if it\'s in another language.

24条回答
  •  北荒
    北荒 (楼主)
    2020-11-22 10:00

    I knew there had to be a way to do it in a single query in a fast way. And here it is:

    A fast way without involvement of external code, kudos to

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

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

提交回复
热议问题