如何删除或更改postgresql上的cakephp分页计数查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除或更改postgresql上的cakephp分页计数查询?相关的知识,希望对你有一定的参考价值。

我正在使用带有postgresql的cakephp。我的一些表非常大。当使用cakephp的分页时,它在大表上运行COUNT()然后查询实际结果。计数查询需要2.5分钟,而返回数据的实际查询需要95毫秒。

是否有可能不需要计数,或用可能更快的东西替换它?我不需要返回确切的行数,就像Google搜索返回约765,000的结果1-10的方式一样。

编辑:或者,有没有办法可以完全禁用计数?通常会有很多结果知道不需要多少页面。我需要的是一个“下一步”按钮,它增加了像蛋糕分页已经拥有的SQL OFFSET,如果下一页没有返回任何行,那就没问题了。

答案

我找到了绕过cakephp中的分页计数查询的方法。在要分页的模型中,您可以覆盖运行计数查询的函数,函数是paginateCount($conditions = null, $recursive = 0, $extra = array())

我使用以下代码来解决我的问题:

function paginateCount($conditions = null, $recursive = 0, $extra = array()) {
    return 0;
}

然后我在视图中编辑了分页以始终显示下一个按钮。转到没有结果的页面只会显示任何内容。

另一答案

官方文档使您能够强制蛋糕获取实际结果:http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html#custom-query-pagination

我希望它有所帮助:-)

以上是关于如何删除或更改postgresql上的cakephp分页计数查询?的主要内容,如果未能解决你的问题,请参考以下文章

postgresql 上的更新类型

PostgreSQL 上的 EF Core 批量删除

如何设置或更改PostgreSQL数据目录位置

如何在 PostgreSQL 中更改视图

更改/删除远程通知上的按钮或按钮文本[重复]

如何在 Django ORM 中更改 PostgreSQL 的默认空排序行为