使用MySQL或PHP随机化结果会更好吗?

时间:2013-03-22 18:44:38

标签: php mysql random

使用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更好吗?

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中传递它。