0

使用 MySQL 或 PHP 命令返回随机行更好吗?

例如,我有一个product包含 10 列和 1000000 行的表,并希望从中返回 10 个随机行。

  • 方法一(让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);
    

方法一好还是方法二好?

4

2 回答 2

4

最好让你的 MySQL 来完成这项工作,提取整个数据库的项目是没有意义的,只是丢弃除了 10 件事之外的所有内容。

所以你的方法1:

$results = mysql_query("SELECT * FROM product WHERE product_id in (SELECT product_id FROM product ORDER BY RAND() LIMIT 10)");

是我建议使用的。

于 2013-03-22T18:46:24.890 回答
0

I think MySQL way is better, because array with 1 million items is a really huge, there is no need to pass it in PHP.

于 2013-03-22T18:46:46.287 回答