使用MySQL或PHP命令返回随机行是否更好?
例如,我有一个包含10列和1000000行的product
表,并希望从中返回10个随机行。
方法1(让MySQL完成大部分工作):
$query = mysql_query("SELECT * FROM product WHERE product_id in (SELECT product_id FROM product ORDER BY RAND() LIMIT 10)");
while($results[] = mysql_fetch_row($query));
方法2(让PHP完成大部分工作):
$query = mysql_query("SELECT * FROM product");
while($results[] = mysql_fetch_row($query));
shuffle($results);
$results = array_slice($results, 0, 10);
方法1或方法2更好吗?
答案 0 :(得分:4)
最好让你的MySQL完成工作,没有必要拔出整个项目数据库,只是放弃除了10件之外的所有事情。
所以你的方法1:
$results = mysql_query("SELECT * FROM product WHERE product_id in (SELECT product_id FROM product ORDER BY RAND() LIMIT 10)");
是我建议使用的。
答案 1 :(得分:0)
我认为MySQL方式更好,因为拥有100万个项目的数组非常庞大,没有必要在PHP中传递它。