随机MySQL排,同时避免漏洞

时间:2010-02-15 06:37:59

标签: php mysql random scalability

我有一个很大的MySQL用户表,需要从中获取六个随机行(我正在使用PHP)。该表具有自动递增的索引列。唯一的问题是某些行被标记为非活动状态,因为某些用户已禁用其帐户或其他任何行。这意味着我不能只计算行数,然后从该范围中获取一个随机数,因为其中一些将处于非活动状态。

如何在不使用RAND()且不尝试查询非活动用户的情况下有效获取随机行?

谢谢!

2 个答案:

答案 0 :(得分:3)

WHERE `inactive` = 0 LIMIT random_offset, 1

其中random_offset在PHP中预先计算(从1到COUNT活跃用户随机)。结果包含6个UNION个查询。

答案 1 :(得分:1)

如果您希望通过RAND()方法避免非常慢的订单,这里有各种替代方案,有各种管理漏洞的选项

quick selection of a random row from a large table in mysql