php - 数据库调用或使用数组哪个更快?

标签 php mysql optimization

在我维护的网站中,我需要查询同一个表(文章)两次,每个类别的文章一次。 AFAIT 基本上有两种方法可以做到这一点(也许有人可以建议更好的第三种方法?):

  1. 执行数据库查询两次,这意味着数据库服务器必须对整个表进行两次排序。每次查询后,我都会遍历光标,为页面上的列表条目生成 html
  2. 仅执行一次查询并提取所有记录,然后将它们排序到两个单独的数组中。之后,我必须分别迭代每个数组才能生成 HTML

所以是这样的:

$newsQuery = $mysqli->query("SELECT * FROM articles WHERE type='news' ");
while($newRow = $newsQuery->fetch_assoc()){
  // generate article summary in html
}
// repeat for informational articles

对比这个:

$query = $mysqli->query("SELECT * FROM articles ");
$news = Array();
$info = Array();
while($row = $query->fetch_assoc()){
  if($row['type'] == "news"){
    $news[] = $row;
  }else{
    $info[] = $row;
  }
}
// iterate over each array separate to generate article summaries

记录集不是很大,当前<200,可能会增长到1000-2000。两种方法之间的时间是否有显着差异?如果有,哪一种更快?

(我知道这整个事情看起来效率非常低,但这是我继承的一个编码很差的网站,并且必须在没有重构整个事情的预算的情况下照顾......)

我用 PHP 编写,没有框架:(,在 MySql 数据库上。

编辑

我刚刚意识到我遗漏了一个主要细节。在网站的给定页面上,我们将一次显示(并因此从数据库中检索)不超过 30 条记录 - 但问题是:15 篇信息文章和 15 篇新闻文章。在每一页上,我们都会提取每种类型的下 15 个。

最佳答案

你知道你可以在数据库中排序吗?

SELECT * FROM articles ORDER BY type

关于php - 数据库调用或使用数组哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30305568/

相关文章:

php - 动态表单到数据库

mysql - 在 Rails 应用程序中查找和显示关系模型中的记录列表时遇到问题

接受格式的 PHP strtotime() 函数?

php - 我怎样才能在 Joomla 的标题中添加一个元素?

php - Mpdf 删除页脚并使用它的内容空间

javascript - 使用提交按钮上的 javascript 更新 php 中的 SQL 语句

optimization - Tensorflow 加载预训练模型使用不同的优化器

c++ - 在 SPOJ AP3(AP - 完成系列)中得到错误答案?

Python CMA-ES 算法求解用户自定义函数和约束

php - 使用 PHP 和 OOP 方法从 MySQL 生成 CSV 文件(mysqli->connect 等)