php - 在 PHP 中比较 1000 行的循环(foreach)和查询数据库 mysql 之间的性能?

标签 php mysql foreach

我想比较循环(foreach)和在超过 1000 行或更大行中选择具有相同条件的数据之间的性能。
示例

Solution 1

$query1 = "select * from table 
            where table.name LIKE 'like-name' 
            and table.age = 1 
            and table.address = 'USA' ";

...处理一些数据库...
然后返回 $results 我想要的超过 100 或 1000 行。

Solution 2

$query2 = "select * from table where table.name LIKE 'like-name' ";

...处理一些数据库...
然后 $results 和我使用 foreach 来过滤这样的结果

$results2 = [];
foreach ($results as $result) {
  if($result['age'] == 1 && $result['address'] == 'USA') {
    $results2 = $result;
  }
}
return $results2;

然后我得到我想要的结果

那么,什么方案性能更好呢? :)

最佳答案

大多数情况下,第一个解决方案会更快,因为它减少了将从 DB 传输到 PHP 的行数。此外,如果有年龄和地址的索引,它可能会更快(但取决于源数据)。

使用 MySQL 的另一个优点是缓存数据,因此有可能有人刚刚运行了相同的查询而 MySQL 可以返回准确的数据——显然这会提高性能。

关于php - 在 PHP 中比较 1000 行的循环(foreach)和查询数据库 mysql 之间的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43953065/

相关文章:

php - 将旧的 sql 代码替换为 pdo 后出现多个错误

mysql - 检查用户是否已经存在

javascript - 在每个循环中获取相对值 jQuery

php - 在多个表中添加记录 PHP MYSQL

php - 如何只读取文本文件的一部分?

php - 管道阶段规范对象必须包含一个带有 php mongo 聚合的字段

mysql - 插入导致 InnoDB 中出现死锁。这怎么发生的?

mysql - 搜索 mysql 表字段以查找字段结尾的最佳方法是什么?

javascript - 从调用 forEach() 数组方法的方法返回。 JavaScript

java - 如何在我自己的集合上使用 For-Each 循环?