我们需要计算Postgresql表中的行数。在我们的情况下,没有条件需要满足,并且如果这显着提高查询速度,得到行估计是完全可以接受的。
基本上,我们希望从< table>中选择count(id)以尽可能快地运行,即使这意味着没有得到精确的结果。
谢谢!任何建议将不胜感激!
快速估计:
SELECT reltuples FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
这优于目前提出的查询 – 包括Postgres Wiki on slow counting.中的建议(我现在更新了):
在pg_class中,relname不是唯一的。在数据库的多个模式中可以有多个具有相同relname的表。这是我的安装中的常见的情况。
而对pg_stat_user_tables的查询是慢500倍,因为这是一个视图在几个表。
如果不对表名进行模式限定,则转换为regclass会观察当前的search_path
以选择最佳匹配。如果表在search_path中的任何模式中不存在(或不可见),您会收到一条错误消息。
Object Identifier Types in the manual的详细信息。
相关答案新选项: