何时在PostgreSQL中使用继承表?

前端之家收集整理的这篇文章主要介绍了何时在PostgreSQL中使用继承表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在哪些情况下,您应该使用继承表?我试图使用它们非常简单,继承看起来不像在OOP世界。

我以为它工作这样:

具有所有用户级别所需的所有字段的表用户。表格如管理员管理员,博主等,但字段不从父项检查。例如,用户有电子邮件字段和继承的博客现在也有它,但它不是唯一的用户和博主在同一时间。即。与我向两个表添加电子邮件字段相同。

只有我可以想到的是通常使用的字段,如row_is_deleted,created_at,modified_at。这是继承表的唯一用法吗?

在postgres中使用表继承有一些主要原因。

让我们说,我们有一些表需要统计,它们是每月创建和填充:

statistics
    - statistics_2010_04 (inherits statistics)
    - statistics_2010_05 (inherits statistics)

在此示例中,我们在每个表中有2.000.000行。每个表都有一个CHECK约束,以确保只有匹配月份的数据存储在其中。

所以什么使继承是一个很酷的功能 – 为什么它很酷的拆分数据?

>性能:当选择数据时,我们SELECT * FROM统计WHERE日期BETWEEN x和Y,而Postgres只使用表,这是有意义的。例如。 SELECT * FROM statistics WHERE date BETWEEN’2010-04-01’AND’2010-04-15’只扫描表statistics_2010_04,所有其他表将不会被感动 – 快!
>索引大小:在列日期,我们没有大胖表的大脂肪索引。我们每月有小表,具有小索引 – 更快的读取。
>维护:我们可以在每个月份表上运行vacuum full,reindex,cluster,而不锁定所有其他数据

对于正确使用表继承作为性能助推器,请查看postgresql手册。
您需要在每个表上设置CHECK约束以告知数据库,您的数据被分割(分区)在哪个键上。

我大量使用表继承,特别是当涉及到存储日志数据按月分组。提示:如果存储数据,它永远不会改变(日志数据),使用CREATE INDEX ON()WITH(fillfactor = 100)创建或索引;这意味着在索引中不会保留更新空间 – 索引在磁盘上较小。

更新:
fillfactor默认为100,从http://www.postgresql.org/docs/9.1/static/sql-createtable.html

表的填充因子是10到100之间的百分比.100(完全打包)是默认值

猜你在找的Postgre SQL相关文章