MySQL:随机播放有限的查询结果?

ein*_*ein 4 mysql sql

可能重复:
来自(我的)Sql数据库的简单随机样本

嗨!

假设我有一个用户表.我想要一个调整结果的查询,只显示5个用户.如何在不使用任何PHP的情况下在MySQL查询中执行此操作?

ajr*_*eal 11

你可以使用rand(),但性能很糟糕

select * from users order by rand() limit 5; <-- slow
Run Code Online (Sandbox Code Playgroud)

我建议,将所有用户ID的列表存储到序列化数组中并缓存到磁盘文件中.(定期更新)

因此,您可以使用PHP取消序列化,并使用PHP array_rand来挑选5个随机用户.

要获取完整信息,您可以这样做

select * from users where user_id in(...); <-- very fast
Run Code Online (Sandbox Code Playgroud)