我正在尝试创建带有分区的简单表。
这是我的命令:
CREATE TABLE measurement (
city_id int not null,
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (logdate);
这是我得到的错误:
SQL 错误 [42601]:错误:“PARTITION”处或附近的语法错误
无法理解是问题所在..
我正在使用 PostgreSQL 9.6.3
“声明式表分区”,即使用自己的语法将分区作为 DBMS 的一流功能PostgreSQL 10 中添加 https://www.postgresql.org/docs/current/static/release-10.html.
在早期版本中,您可以使用“表继承”花费更多的努力来实现相同的效果。有手册中的一页描述了如何手动执行此操作 https://www.postgresql.org/docs/9.6/static/ddl-partitioning.html,总结为:
- 创建“主”表,所有分区都将从该表继承。
- 创建多个“子”表,每个子表都继承自主表。
- 向分区表添加表约束以定义每个分区中允许的键值。
- 对于每个分区,在键列上创建一个索引,以及您可能需要的任何其他索引。
- (可选)定义触发器或规则以将插入主表的数据重定向到适当的分区。
- 确保postgresql.conf 中的constraint_exclusion 配置参数未禁用。如果是,查询将不会根据需要进行优化。
为了使这更容易,如果您无法升级到版本 10,您可以使用扩展,例如pg_partman https://pgxn.org/dist/pg_partman/它为您提供了用于设置和管理分区集的附加功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)