我有一个大的MySQL用户表,需要从它(我使用PHP)获得六个随机行。该表具有自动递增的索引列。唯一的问题是有些行被标记为不活动,因为有些用户已经禁用了他们的账户或者其他任何东西。这意味着我不能只对行进行计数,然后从该范围中获取一个随机数,因为其中一些数据将处于非活动状态。随机MySQL行,同时避免漏洞
如何在不使用RAND()并且不尝试查询非活动用户的情况下高效地获取随机行?
谢谢!
我有一个大的MySQL用户表,需要从它(我使用PHP)获得六个随机行。该表具有自动递增的索引列。唯一的问题是有些行被标记为不活动,因为有些用户已经禁用了他们的账户或者其他任何东西。这意味着我不能只对行进行计数,然后从该范围中获取一个随机数,因为其中一些数据将处于非活动状态。随机MySQL行,同时避免漏洞
如何在不使用RAND()并且不尝试查询非活动用户的情况下高效地获取随机行?
谢谢!
WHERE `inactive` = 0 LIMIT random_offset, 1
其中random_offset
在PHP预先计算(随机1〜活跃用户COUNT
)。结果由6个UNION
ed查询组成。
谢谢!我完全忘记了LIMIT可能需要2个参数。 – tau 2010-02-15 06:43:20
如果您希望通过RAND避免非常缓慢顺序()方法,这里有各种替代方案,各种选项来管理孔
为什么你想避免RAND()? – 2010-02-15 06:43:44
@astander:因为它慢吗? – zerkms 2010-02-15 06:57:33