MySQL什么是选择X随机条目(而不只是一个) - 优化大量使用,即在域的主页上。MySQL选择随机X条目 - 优化
据说只是盲目地使用MySQL rand()会让这个对于大型数据库来说非常可怕 - 请给我一个比这更好的优化答案!
MySQL什么是选择X随机条目(而不只是一个) - 优化大量使用,即在域的主页上。MySQL选择随机X条目 - 优化
据说只是盲目地使用MySQL rand()会让这个对于大型数据库来说非常可怕 - 请给我一个比这更好的优化答案!
溶液是使用PHP
看看在这篇文章中选择的解决方案编号3更快
http://akinas.com/pages/en/blog/mysql_random_row/
解决方案3 [PHP]
$offset_result = mysql_query(" SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
$offset_row = mysql_fetch_object($offset_result);
$offset = $offset_row->offset;
$result = mysql_query(" SELECT * FROM `table` LIMIT $offset, 1 ")
的 解决方案4 [SQL](Second in fast)
SELECT * FROM `table` WHERE id >= (SELECT FLOOR(MAX(id) * RAND()) FROM `table`) ORDER BY id LIMIT 1;
我对ID有问题。该ID是自动生成的,但最小的ID相对于总记录数非常大。所以我做了一些改动,使查询更加随机化,但稍微慢一点。
SELECT * FROM 'table' WHERE id >= (SELECT (FLOOR(MAX(id) * RAND()) + MIN(id)) FROM 'table') ORDER BY id LIMIT 10
这很快但并非真正随机 - 只有第一个值是随机的。 – burnall 2010-08-09 05:44:57
它得到一个随机结果,如果你想更多你可以循环它 – 2010-08-09 05:52:00
尝试第四MySQL解决方案在上面的链接 - 似乎随机ish – ina 2010-08-09 07:21:33