我在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。