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

前端 未结 24 2041
旧时难觅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条回答
  •  Happy的楠姐
    2020-11-22 09:47

    Here's a solution that runs fairly quickly, and it gets a better random distribution without depending on id values being contiguous or starting at 1.

    SET @r := (SELECT ROUND(RAND() * (SELECT COUNT(*) FROM mytable)));
    SET @sql := CONCAT('SELECT * FROM mytable LIMIT ', @r, ', 1');
    PREPARE stmt1 FROM @sql;
    EXECUTE stmt1;
    

提交回复
热议问题