postgresql有没有像mysql的FOUND_ROWS()一样的函数或别的来获取查询数量呢

mysql在查询sql的select后面跟上 SQL_CALC_FOUND_ROWS
然后再执行一遍 SELECT FOUND_ROWS();就可以获取sql不带limit的查询结果数量了
postgresql 有没有这样的方法呢?

阅读 3.7k
1 个回答

没有完全对等的特性。

事实上,MySQL的这个特性唯一适用的场景就是做Web应用开发的分页查询,其他场景下没有看出来有什么合适的用武之处,而PostgreSQL的一个主要原则就是要尽量遵循SQL标准,所以PG中不太可能指望官方支持这类方言。而且带SQL_CALC_FOUND_ROWS的SELECT语句无法被缓存,所以性能上未比就是好选择

建议封装一个只读事务来做这个事情吧

BEGIN TRANSACTION READ ONLY;
SELECT col1,... FROM table WHERE condition LIMIT xx OFFSET yy;
SELECT COUNT(col1) FROM table WHERE condition;
END;

反正就算你用SQL_CALC_FOUND_ROWS也是得写两句SELECT,开发量上差不多:D

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题