我有一個關於性能的問題。我有一個包含訂單頭的表,無論何時訂單發貨和開票時,該行都會從訂單頭移至orderheaders_history。這是由別人設計的。現在,我想在orderheaders表中的一列來定義行是當前還是歷史更有效。什麼方式更好?mysql訂單數據庫使用2表的當前和歷史?
謝謝!
我有一個關於性能的問題。我有一個包含訂單頭的表,無論何時訂單發貨和開票時,該行都會從訂單頭移至orderheaders_history。這是由別人設計的。現在,我想在orderheaders表中的一列來定義行是當前還是歷史更有效。什麼方式更好?mysql訂單數據庫使用2表的當前和歷史?
謝謝!
僅當您有很多記錄時,單獨表格中的歷史數據纔有意義。什麼「很多」只能由你來決定。如果你的查詢變得越來越慢,並且將歷史數據與更新的數據分組並不是業務需要,那麼你將它們分開,但一般來說,我將只有一張表包含當前和歷史數據,並且只有當我可以構建一個堅實的案例我會去一個歷史悠久的餐桌。
一旦你達到臨界質量的記錄,你需要把你的記錄放在不同的地方,然後你可以開始在更便宜,更慢的硬盤驅動器(不是說不太可靠)傾銷你的數據,這將使你有一個更低的數據存儲的總成本,同時仍然可以使用所有數據。
最後,如果你已經有一個自動化的工作過程,我不會去改變它,只是爲了改變它。更改數據庫是有風險的,並且您不希望丟失或損壞數據。如果這個過程確實產生了開銷,並且你沒有從這些表中分離出來,那麼我建議你考慮回到一個更簡單的表結構。
它總是很好的保持表結構簡單。有兩個表只有一個字段不同,這沒有意義。因此,更好地創建新的字段「狀態」,一旦訂單發貨/開具發票,將立即設置該字段。 –
這就是我想的,謝謝你的確認。 – Snuur
如果您有大量的行,則歷史記錄表可以有意義。它允許您在不影響實時數據性能的情況下執行長時間運行的查詢/操作 – Gryphius