我有一個表,說:處理修訂中的Oracle
CREATE TABLE "DataNode" (
"ID" NUMBER(7,0),
"TYPE" NUMBER(7,0),
"NAME" VARCHAR2(100),
"STATUS" NUMBER(7,0),
"REVISION" NUMBER(4,0),
"MODIFIEDAT" DATE
);
CREATE TABLE "DataNode_Revisions" (
"ID" NUMBER(7,0),
"NODEID" NUMBER(7,0),
"TYPE" NUMBER(7,0),
"NAME" VARCHAR2(100),
"STATUS" NUMBER(7,0),
"REVISION" NUMBER(4,0),
"MODIFIEDAT" DATE
) COMPRESS;
所以,我有這兩個表。我從「DataNode」執行所有讀操作,當發生更改時,我將當前條目寫入「DataNode_Revisions」,然後修改現有的「DataNode」記錄。說得通?
這是最好的方法去解決它嗎?我已經可以告訴我在架構更改時會遇到問題。我沒有看到更好的選擇,但如果有一個請讓我知道!我假設將這一切全部保存在一張表中會導致巨大的性能損失。我的意思是我會超過記錄數量的四倍,而且已經有不少。我認爲Drupal存儲這樣的節點修訂,我很好奇它們如何不受它的性能問題影響。
「DataNode」不斷被許多用戶閱讀。然而,很少有人寫過這樣的話。 「DataNode_Revisions」只是偶爾讀取。我只是擔心維護這麼多桌子。 「DataNode」是與這個非常相似的〜25個表中的一個。
+1:基於函數的索引思想非常好! – 2010-11-23 16:37:09