我有一个模式 myschema
其中有几十个表,每个表都包含一个特定的列 maincolumn
. 我想创建整个模式的统计信息,在这里可以看到 maincolumn
每一张table。
我知道我可以作为此查询的结果列出架构中的表:
SELECT tablename
FROM pg_tables
WHERE schemaname = 'myschema'
结果:
tablename
---------
table1
table2
table3
...
我还可以为每个表运行查询:
SELECT COUNT(DISTINCT(maincolumn))
FROM myschema.table1
结果:
count
-----
2972
但我想知道是否有办法将这两个任务连接到一个查询中,结果会是:
tablename | count
----------+------
table1 | 2972
table2 | 542
table3 | 1523
....
一个不那么优雅的解决方案是列出我的所有表,将结果放入excel表中并使用 CONCATENATE
函数来创建 SELECT
查询到每个表,然后我可以逐行运行它,但我更喜欢一种更简单的方法。
1条答案
按热度按时间tag5nh1u1#
为此,您可能需要动态sql,可能是在pl/pgsql函数中:
而且,这个很贵。
如果近似计数对您来说足够好,请尝试
如果您运行
ANALYZE
第一。