如何高效地对大型 MySQL 表数据进行随机排序?

如何高效地对大型 MySQL 表数据进行随机排序?

随机打乱 mysql 表的数据

对于大型数据集,对表中的数据进行按插入顺序排序非常低效。如果您希望重新排列表中的数据以便随机排序,可以使用以下方法:

方法 1:子查询

select * from test1 as u inner join (select id from test1 where totalscore between 5 and 100 order by rand() limit 100) as t on t.id=u.id where 1
登录后复制

方法 2:常规写法

SELECT * FROM student WHERE totalScore BETWEEN 5 AND 100 ORDER BY RAND() LIMIT 100;
登录后复制

方法 1 使用子查询来从表中选择一个随机排序的 id 列表,然后将其与主表进行联接。这种方法性能更好。

方法 2 是 mysql 的常规写法。虽然它更容易理解,但当数据集较大时性能会下降。

请注意,rand() 函数会生成一个伪随机数,因此结果不会真正随机。如果需要真正的随机性,可以使用诸如 uuid 之类的值。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容