远程分页和last_page:在数据库查询期间或之后进行筛选



我想使用Tabulator的远程分页从数据库表中加载记录,一次加载一页。我希望我能够使用Tabulator发送到远程后端的页面和大小参数来确定从数据库中选择哪些记录。例如,对于page=2和size=10,我可以使用MySQL的LIMIT 10,20来选择要在page2上显示的记录(如果size设置为10(。

然而,这样做使我无法使用所有记录的计数来确定表中的页数。对返回的记录进行计数只会产生10条记录,即使总共有500条记录(例如(,因此只会显示一个分页按钮(而不是预期的50个按钮(。

因此,为了进行远程分页;正确地";在Tabulator中,我似乎必须执行查询来统计数据库中的所有记录(没有限制(,然后执行计数来确定last_page,然后执行类似PHP的array_slice的操作来提取第n页的记录作为数据集返回。或者我可以做两个数据库查询:统计所有记录以确定页数,然后做LIMIT[start],[end]查询
这样正确吗?

Tabulator需要知道最后一个页码,以便在表页脚中布局分页按钮,以便用户可以从页面列表中选择要查看的页面。

您只需要执行一个查询来计算记录的总数,并将其除以请求中传递的页面大小。您可以非常有效地运行计数查询,只返回计数而不返回数据。

然后,您可以运行一个对记录设置限制的标准查询,以检索该页面的记录。

如果你想进一步优化,你可以把计数值保存在缓存中,这样你就不需要在每次请求时都生成它。

最新更新