【发布时间】:2013-07-14 22:11:14
【问题描述】:
我想在查询后随机化行,但是在有 120k+ 行的表上使用 order by rand() 只会让人筋疲力尽。我找到了一个只输出行数的小解决方案,但它运行起来就像从随机索引开始,然后返回#number of rows。它非常快,但这只是在随机索引之后返回一些行。代码如下:
SELECT *
FROM lieky AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(col_0)
FROM lieky)) AS id)
AS r2
WHERE r1.col_0 >= r2.id
ORDER BY r1.col_0 ASC
LIMIT 100
我在这里找到了它:http://jan.kneschke.de/projects/mysql/order-by-rand/
有什么可以帮助我的吗?
我正在尝试将随机数据放入分页中,因此当用户查询数据库时,他将始终以随机顺序获取行。 感谢您的帮助。
【问题讨论】:
标签: mysql select optimization random