MySQL选择随机X条目 - 优化

时间:2010-08-09 05:12:29

标签: mysql random

MySQL选择X随机条目(而不仅仅是一个)的最佳方式 - 大量使用的优化,即在域的主页上。

据说只是盲目地使用MySQL rand()会让大型数据库变得相当可怕 - 请给我一个更好的优化答案!

2 个答案:

答案 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