我使用以下代码从表中返回一个随机行。使用字段'rand'。使用随机索引和RAND提取随机行()
INSERT INTO imgs SET rand = RAND()
出于某种原因,结果虽然改变每次运行都具有非常低的“兰特”只排场:
SELECT *
FROM imgs
WHERE rand > RAND()
ORDER BY rand ASC
LIMIT 1
字段“兰特”是由MySQL在创建使用类似的东西产生。绝对有超过7000行的完整范围。如果我用'WHERE rand> [0-1之间的数字''替换'WHERE rand> RAND()',接缝工作正常'
除了处理100K +行时不能很好地扩展,为什么不只是使用'ORDER BY RAND()'? – 2010-09-15 19:46:22
我正试图为需要定期将我的共享服务器推向极限的客户开发一个非常优化的系统。 显而易见的解决方案是在php中生成随机float,但在SQL语句中,接口更符合逻辑。 – 2010-09-15 21:30:03