PostgreSQL中FOUND_ROWS()的最佳替代方案

时间:2014-03-26 20:33:36

标签: postgresql pdo

我在NET上搜索MySQL FOUND_ROWS()的替代方法,如何在使用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。

0 个答案:

没有答案