在我的遺留數據庫(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節省了代碼! –