PostgreSQL中找到的_ROWS()的最佳选择

PostgreSQL中找到的_ROWS()的最佳选择,postgresql,pdo,Postgresql,Pdo,我在网上搜索MySQL的替代品,找到了行,如何在使用limit和WHERE时获取所有行。我需要这个来分页 我发现了一些不同的方法,但我没有多少经验,一周前我迁移到PostgreSQL,哪种方法性能最好 SELECT stuff, count(*) OVER() AS total_count FROM table WHERE condition ORDER BY stuff OFFSET 40 LIMIT 20 BEGIN; SELECT * FROM mytable OFFSET X LIMI

我在网上搜索MySQL的替代品,找到了行,如何在使用limit和WHERE时获取所有行。我需要这个来分页

我发现了一些不同的方法,但我没有多少经验,一周前我迁移到PostgreSQL,哪种方法性能最好

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

BEGIN;
SELECT * FROM mytable OFFSET X LIMIT Y;
SELECT COUNT(*) AS total FROM mytable;
END;

BEGIN ISOLATION LEVEL SERIALIZABLE;
SELECT id, username, title, date FROM posts ORDER BY date DESC LIMIT 20;
SELECT count(id, username, title, date) AS total FROM posts;
END;

select * into tmp_tbl from tbl where [limitations];
select * from tmp_tbl offset 10 limit 10;
select count(*) from tmp_tbl;
drop table tmp_tbl;
如果有另一种方法尚未描述,并将获得最佳性能,请让我知道


我正在使用PostgreSQL 9.3.4版和PDO for PHP。

第一个版本是最好的。根据各种情况,可能有各种方法来提高性能。类似于部分索引或具有无间隙序列号的物化视图。