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

标签 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);
    

方法一好还是方法二好?

最佳答案

最好让您的 MySQL 完成工作,拉出整个项目数据库没有意义,只是丢弃除 10 项以外的所有项目。

所以你的方法一:

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

是我建议使用的。

关于php - 使用 MySQL 或 PHP 随机化结果更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577690/

相关文章:

php - php中的mysql错误

php - 如何提供 2 个打印选项?

mysql - Django-Memsql初始迁移报错

python - python中的二维随机游走-从分布中绘制斜边

java - 如何将伪随机数缩放到特定范围?

php - Mysql Select查找重复项

php - 在行中重用 Regex 组

mysql - 无法从subsonic 2.2插入到mysql(Joomla CMS数据库)

mysql - 如何在 codeigniter 中使用子句 where 和带有 2 个参数的组

根据出现概率用非 NA 值替换数据框中列中的 NA 值