0

我正在构建一个表格 javascript 前端来浏览我的融合表。一些视图有过滤器和分组,我希望能够对结果进行分页。对于 CouchDB 和 CloudMine 等其他云数据库,我可以将 &count=true 放在我的请求 URL 中以获取超出我的 LIMIT 的总行数。我需要一种通过融合表获得该数字的方法。

我只能想到两种选择,都比较贵:

1) 做两个查询——我的主查询带有 LIMIT/OFFSET,同一个查询没有 LIMIT/OFFSET,并得到第二个查询的 .length 作为我的计数

2) 做一个没有 LIMIT/OFFSET 的查询,只使用数据子集

这两个选项都违背了使用 LIMIT/OFFSET 来提高网络性能的目的。有没有其他方法可以得到计数?因为我使用 GROUP BY,所以我什至无法使用 COUNT() 进行第二次查询。

谢谢你的建议!

4

1 回答 1

0

我不知道将计数作为某种特殊参数接收的方法。所以你只能做一个 seocond 查询,但不需要传输相同的数据,只是为了获取计数。

我会使用具有相同WHEREandGROUP BY子句的查询,但只请求ROWID. 这样,只需传输少量数据。或者,您也可以使用该COUNT()函数并简单地总结返回值。

如果您想进一步减少网络负载,您只需执行一次此附加查询并在客户端进行所有进一步计算(例如当您在第 3 页时<count> - 3 * <no of rows per page>,或者<count> + 1如果用户添加一行)。

如果您的数据没有快速更改(甚至仅通过您的用户界面),这应该是可能的。我认为每个表运行一个额外的查询并不是那么糟糕。

于 2012-10-22T15:17:13.847 回答