<分区>
我正忙于为我的框架开发一个分页组件,我想知道以下两个中哪个更快(或者是否有更好的解决方案甚至更好)。
我的想法是让我的对象按以下顺序执行以下操作:
- 从 GET 变量获取当前页面和每页的结果
- 获取用于显示目的的结果总数(显示 534 个结果中的 10 个)
- 根据当前页面和每页的结果确定要获取的结果。
- 返回结果查看展示和构建分页类
据我所知,我有 2 个选项之一:
多次查询结果较少
- 执行查询以确定所有结果的行数。
- 执行另一个查询以使用偏移量返回事件页面所需的结果
一个查询并让 PHP 进行处理
- 将所有行返回到一个数组
- 让 PHP 返回数组中的行并执行 count()
哪个会更快?我知道选项 1 的结果越多越好,但感觉仍然像 2 个查询来计算行数然后返回某些结果仍然感觉比仅返回所有结果并让 PHP 执行其余处理的 1 个查询更快。
我可能还缺少另一种更充分的方法吗?
测试它。
我们不知道您的框架在做什么,您的数据库是如何构建的,或者您的 PHP 代码对数据进行了多少处理。对两者的核心项目进行编码,并在同一模拟数据集上运行测试。
如果您真的想进城,请对一系列占位符数据运行一组测试,并使用各种负载测试项目。毕竟,您是在制作一个“框架”,所以您不妨找出可行的方法。
还有我个人的看法:
如果 PHP 代码是整页渲染,或在单个 session 中完成,请使用内部 SQL View 获取页面。如果您要拥有一个由多个 session 同时使用的 *.php 文件,则只将数据完全存储在 PHP 中,并且这样做可以避免数据库往返。