在我的遗留数据库(Postgres 9.1)中,我有几个包含各种文档的表格(假设它们是'父'表)。 此外,存在与这些文件的各种参数的表:我应该在更新的数据模型中使用hstore吗?
create table params (
kind integer,
docid integer,
parname text,
parvalue text,
constraint params_pk primary key (kind, docid, parname));
可以有许多(parname,parvalue)双为一个文档。 由于种类指向不同的表,它不能用作外键。
由于params只用于打印文件,它一直运行良好多年。 现在这个表格包含5百万行,并且数据也需要用于其他目的。 所以现在是更新这个模型的时候了。
基本上params为文档插入一次并且很少更新。它们将作为一个整体来阅读(用于文档)。没有必要搜索特定的parname。
我有三个想法:
变A. 分解表根据父表和使用文档ID为外键PARAMS到几个表。
变式B 拆分表PARAMS如在变体A和存储(parname,parvalue)作为hstore。
变体C. 在每个父表中添加一个hstore字段并忘记其他表。
我对hstore没有经验。 每个变体的缺点和优点是什么?你会选哪一个?难道hstore会让我感到奇怪吗?
完成!现在在开发环境中。这比我想象的要容易得多。谢谢大家,特别是klin节省了代码! –