PostgreSQL中FOUND_ROWS()函数的等效函数

ycl3bljg  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(3)|浏览(155)

我在我的应用程序中做了一些分页,使用PostgreSQL的标准OFFSET和LIMIT关键字从数据库中一次返回20行。例如,获取第1页:

SELECT stuff FROM table WHERE condition ORDER BY stuff OFFSET 0 LIMIT 20

应用程序的一个要求是我们还向用户显示记录的总数。所以,很明显,我可以通过发出一个单独的查询来获得总数:

SELECT COUNT(*) FROM table WHERE condition

但是如果有大量的行,那么这不是最佳解决方案。我注意到MySQL有一个非常有用的函数FOUND_ROWS(),它正好可以实现我想要的功能:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function%5Ffound-rows
在PostgreSQL中有等价的吗?

beq87vna

beq87vna1#

PostgreSQL已经有一段时间了,window functions可以用来做很多事情,包括在LIMIT应用之前计数行。
基于上面的示例:

SELECT stuff,
       count(*) OVER() AS total_count
FROM table
WHERE condition
ORDER BY stuff OFFSET 40 LIMIT 20
64jmpszr

64jmpszr3#

SELECT
    n_live_tup     
FROM
    pg_stat_user_tables     
WHERE 
    relname = 'table_Name';

相关问题