0

我在使用 postgresql 时遇到以下情况 - 表数 - 100 ,每个表的行数 - ~ 1000 万。所有的表都有相同的模式例如每个表都包含一个公司的日常通话记录。所以 100 个表包含 100 天的通话记录。

我想对这些表进行以下类型的查询 - 对于每个表的每一列,获取该列中具有空值的记录数。

那么考虑到上述情况,表结构的主要优化是什么?我应该如何准备我的查询,是否存在任何有效的查询此类情况的方法

4

1 回答 1

0

如果您使用 Postgres 表继承,那么简单的select count(*) from calls where foo is null就可以了。如果空 foo 行不太常见,它将使用 foo 上的索引。

在内部,这将完成您在没有表继承的情况下手动执行的操作,即union all每个单独子表的结果。

如果您需要重复运行此操作,请将计数保存在 memcached 或另一个表中。

于 2014-01-14T07:07:32.523 回答