php - 哪个更快 : multiple queries with less results or returning all and getting php to process

标签 php mysql pdo

<分区>

我正忙于为我的框架开发一个分页组件,我想知道以下两个中哪个更快(或者是否有更好的解决方案甚至更好)。

我的想法是让我的对象按以下顺序执行以下操作:

  1. 从 GET 变量获取当前页面和每页的结果
  2. 获取用于显示目的的结果总数(显示 534 个结果中的 10 个)
  3. 根据当前页面和每页的结果确定要获取的结果。
  4. 返回结果查看展示和构建分页类

据我所知,我有 2 个选项之一:

多次查询结果较少

  1. 执行查询以确定所有结果的行数。
  2. 执行另一个查询以使用偏移量返回事件页面所需的结果

一个查询并让 PHP 进行处理

  1. 将所有行返回到一个数组
  2. 让 PHP 返回数组中的行并执行 count()

哪个会更快?我知道选项 1 的结果越多越好,但感觉仍然像 2 个查询来计算行数然后返回某些结果仍然感觉比仅返回所有结果并让 PHP 执行其余处理的 1 个查询更快。

我可能还缺少另一种更充分的方法吗?

最佳答案

测试它。

我们不知道您的框架在做什么,您的数据库是如何构建的,或者您的 PHP 代码对数据进行了多少处理。对两者的核心项目进行编码,并在同一模拟数据集上运行测试。

如果您真的想进城,请对一系列占位符数据运行一组测试,并使用各种负载测试项目。毕竟,您是在制作一个“框架”,所以您不妨找出可行的方法。

还有我个人的看法:

如果 PHP 代码是整页渲染,或在单个 session 中完成,请使用内部 SQL View 获取页面。如果您要拥有一个由多个 session 同时使用的 *.php 文件,则只将数据完全存储在 PHP 中,并且这样做可以避免数据库往返。

关于php - 哪个更快 : multiple queries with less results or returning all and getting php to process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779465/

相关文章:

mysql - 在 PHPmyadmin 中使用 MySql 以公里为单位的距离

php - 引用——关于 PDO 的常见问题

php - 如何使用 php pdo 创建 JSON 嵌套对象

php - 为什么我的 foreach 循环不显示我的 mysql 数据?

PHP - 遍历 $_FILES 以检查文件类型

php - DVWA登录错误

php - FOR 循环同时从 $_POST 抓取部分数据

javascript - PHP 表单保持在同一页面上

php - 从两列的 MySQL 表中查找相同的值

mysql - Sensu 检查 MySQL 长时间运行的查询。