我想提出一个有争议的问题。
我有一个包含1000行数据的表。我希望能够在前端搜索引擎中搜索和查看所有这些行。
我希望每页显示50条结果。
问题是-我应该只通过存储库简单地返回所有过滤结果(可能是1000行数据),并让流体引导程序布局处理分页,还是应该告诉存储库使用setLimit和offset仅返回50行应该在当前页面中显示哪些数据?
最初,我认为无论哪种方式都将在每个页面调用上请求一条SQL语句,因此后者会更好,因为该SQL返回限制为仅50行数据,但是现在我怀疑Typo3使用某种存储库或数据库缓存意味着只需要调用一次数据库批量数据并将其存储在内存中,其余的工作将由分页处理。另外,必须使用setLimit和Offset构建自己的分页系统。
您认为更有效的是什么?我应该允许sql语句返回所有数据并让分页程序轻松处理,还是应该先使用setLimit限制sql语句并构建自己的分页?还是有办法混合两者?
其他信息:
我的存储库SQL搜索非常简单。它正在使用:
$query = $this->createQuery();
...加上一个“匹配”查询以过滤结果,最后是
return $query->execute();
答案 0 :(得分:1)
如果您使用widget.paginate ViewHelper,它将自动正确限制查询。在您尝试访问数据之前,不会执行查询,因此,只要您不尝试在分页的ViewHelper之外访问数据,就无需手动限制它。