可能重复:
来自(我的)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)