0

MySQL または PHP コマンドを使用してランダムな行を返す方が良いですか?

たとえば、product10 列と 1000000 行のテーブルがあり、そこからランダムに 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 のどちらが優れていますか?

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

100万個のアイテムを含む配列は非常に大きいため、PHPで渡す必要がないため、MySQLの方法の方が優れていると思います。

于 2013-03-22T18:46:46.287 に答える