2010-07-12 64 views
0

我有一個包含快照數據的SQLServer表。我需要比較最新的一行和之前的一行,並確定某些列是否已經更改。我需要多次比較不同的色譜柱組合,最多可以多達40個。每次在一個組合中我需要創建一個包含最新值的XML文檔的列值不同。我希望每一行都能生成至少一個xml文檔。多次比較同一個表的兩行

哪裏是進行比較的最佳場所,我應該在存儲的過程中進行此操作,每個組合的列都應該有一個。或者我應該通過ADO.NET撤回整行並在代碼中進行比較?有比較簡單的方法嗎?

+0

這是什麼類型的應用程序? Web應用程序?桌面? Windows服務?網絡服務?也就是說,您是比較在用戶的桌面上,在Web服務器上,在另一個服務器上還是在數據庫引擎中執行這些工作? – DOK 2010-07-12 15:20:11

+0

你期望創建什麼樣的XML文檔? – 2010-07-12 15:21:01

+1

這將是一個Windows服務。我們並不擔心性能,而是編碼和維護的便利性。 – Dorian 2010-07-12 15:34:33

回答

0

通過ADO.Net比較行首先似乎光滑,但可以很快變老。隨着數據量的增加,您的執行時間也會增加。

SQL Server中的比較是你最好的選擇。

2

你沒有提供足夠的細節(DDL,例子等),要知道,如果這是你想要做什麼,但...

過去在這樣的情況下我會創建一個觸發器表並將更改日誌寫入另一個表。然後閱讀,處理和刪除排隊的更改條目。

在觸發器中,您可以查詢列的狀態以查看它是否已更新。

0

一般來說,你描述的工作最好的(即最快的)地方儘可能接近數據,即在數據庫本身。

這就是說,我想知道你爲什麼這樣做,是否可以從另一個角度來解決問題。