簡體   English   中英

SQL Server中的數據時間軸性能

[英]Data timeline performance in Sql Server

我有一個包含三列的表:

用戶varchar,狀態varchar,rep int

status和rep經常更新,其中一項要求是:

給定日期時間值,查看給定日期的每個用戶的狀態和代表值。

我可以向表中添加一個update_at datetime列,並在同一用戶中插入新行,而不是更新現有用戶,但是表變大了,我需要將查詢結果與其他表的類似結果連接起來,因此我需要快速查詢。

在SQL Server中解決此問題的最佳方法是什么?

根據確切地使用報告信息的方式,最好創建一個歷史表,該表在更新主表之前將當前值寫到歷史表中,並添加時間戳。

如果您真的只從歷史記錄中選擇特定的日期/用戶/狀態,那將是最好的

我會將其存儲在一個單獨的相關表中,因為我認為大多數情況下,當您加入時,您只會查詢當前狀態。 如果您將要進行大量此類查詢並將此類數據添加到許多表中,而不僅是此表,那么我將創建一個單獨的OLAP數據庫進行報告。

順便說一句,只要您這樣做,就可以考慮是否還要記錄誰進行了更改。 然后,您基本上構建了一個審核解決方案。

一種選擇是使用兩個單獨的表:“當前值”表和歷史記錄表。 當前值表將僅包含每個用戶的最新值,這將使其保持較小且易於連接。 歷史記錄表將包含您列出的三列以及時間戳列,並將跟蹤隨時間變化的值。 每當您想更改當前值表中的值時,都可以使用gettime()作為時間戳,同時將具有新值的行添加到歷史表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM