如果PostgreSQL计数(*)总是很慢,如何对复杂查询进行分页?

如果PostgreSQL的count(*)总是很慢,那么如何对复杂查询进行分页

制作触发器似乎不是一个好的解决方案,只要在这种情况下我们有很多页面(例如不同的类别、过滤器等)

如果VACUUM/VACUUM analysis/analysis/VACUUM FULL没有帮助,该怎么办?在postgresql中使用count(*)的最佳实践是什么

你看过那篇文章的标题了吗

请注意,以下文章仅适用于9.2之前的PostgreSQL版本。现在只执行索引扫描

使用9.2,你通常会发现你会得到更好的结果。有关详细信息,请阅读“仅索引扫描wiki”页面

也就是说,在旧版本上,使用限制偏移通常可以正常工作。如果您不介意一些变化的话,您可以使用表统计信息估计行数(因此也可以估计页面数)。请参阅您已经链接到的文章中的“估计行数”

使用LIMITOFFSET分页,依我看,无论如何都是一种反模式。很多时候,您可以重新表述分页代码,使其使用sort\u column>'上次看到的值“限制100,即它避免了偏移。这有时会导致非常大的性能提升

发表评论