【发布时间】:2011-05-30 20:53:22
【问题描述】:
嗨!
假设我有一个用户表。我想要一个随机显示结果并且只显示 5 个用户的查询。如何在不使用任何 php 的情况下在 MySQL 查询中做到这一点?
【问题讨论】:
嗨!
假设我有一个用户表。我想要一个随机显示结果并且只显示 5 个用户的查询。如何在不使用任何 php 的情况下在 MySQL 查询中做到这一点?
【问题讨论】:
你可以使用rand(),但是性能很糟糕
select * from users order by rand() limit 5; <-- slow
我建议,将所有用户 ID 的列表存储到序列化数组中并缓存到磁盘文件中。 (定期更新)
因此,您可以使用 PHP 将其反序列化,并使用 PHP array_rand 随机选择 5 个用户。
要获取完整信息,您可以这样做
select * from users where user_id in(...); <-- very fast
【讨论】:
SELECT user FROM users
ORDER BY RAND()
LIMIT 5
【讨论】: