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

前端 未结 24 1767
旧时难觅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:09

    Add a column containing a calculated random value to each row, and use that in the ordering clause, limiting to one result upon selection. This works out faster than having the table scan that ORDER BY RANDOM() causes.

    Update: You still need to calculate some random value prior to issuing the SELECT statement upon retrieval, of course, e.g.

    SELECT * FROM `foo` WHERE `foo_rand` >= {some random value} LIMIT 1
    

提交回复
热议问题