MySQL选择X随机条目(而不仅仅是一个)的最佳方式 - 大量使用的优化,即在域的主页上。
据说只是盲目地使用MySQL rand()会让大型数据库变得相当可怕 - 请给我一个更好的优化答案!
答案 0 :(得分:2)
解决方案是使用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](快速秒)
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
答案 1 :(得分:0)
我遇到了ids问题。 id是自动生成的,但最小ID相对于总记录数非常大。所以我做了一些改动,使查询更随机,但有点慢。
SELECT * FROM 'table' WHERE id >= (SELECT (FLOOR( MAX(id) * RAND()) + MIN(id)) FROM 'table' ) ORDER BY id LIMIT 10