簡單的概念我們基本上是在做一些審計,比較進入的內容以及處理過程中實際發生的情況。我正在尋找一種更好的方式來執行查詢,該查詢可以與名稱和潛在類型略有不同的列進行並排表比較。SQL Server將類似的表格與查詢進行比較
DB佈局:
表(*爲連接條件)
登錄(未經修改的數據記錄。)
- LOGID
- 的recordId *
- 名稱
- 日期
- 地址
- 產品
- 等
審計(後處理記錄)
- CardId中*
- CarName
- DeploymentDate
- ShippingAddress
- 選項
- 等
對於例如這個將工作,如果你看過去惱人的比較lexity編寫和性能問題。
該查詢只是加入左側和右側,並選擇它們作爲字符串。顯示每個匹配的字段。
select
cast(log.RecordID as varchar(40)) + '=' + cast(audit.CardID as varchar(40),
log.Name+ '=' + audit.Name ,
cast(log.Date as varchar(40)) + '=' + cast(audit.DeploymentDate as varchar(40),
log.Address + '=' + audit.ShippingAddress,
log.Products+ '=' + audit.Options
--etc
from Audit audit, Log log
where audit.CardID=log.RecordId
這將輸出類似:
1 = 1測試=測試名11月9日/ 2009 = 11/10/2009空=我的地址空=輪
這工程,但非常討厭建立。我想到的另一件事就是別名列,聯合兩個表,並命令他們,所以他們將列表形式。這可以讓我看到列的比較。這伴隨着所有聯盟的明顯開銷。
即:
日誌1個測試11/09/2009 NULL,NULL
審計1測試名11/10/2009我的地址車輪
上更好的方法來審覈任何建議這個數據?
讓我知道你可能有什麼其他問題。
其他注意事項。我們將要減少不重要的信息,所以在某些情況下,如果他們是平等的,我們可能NULL列(但我知道它的速度太慢)
,或者如果我們正在做的第二種方式
nullif(log.[Name], audit.[CarName]) as [Name]
,nullif(audit.[CarName], log.[Name]) as [Name]
你是什麼意思的更好的方法?您是否在尋找更好的方式來顯示數據,以便更清楚地閱讀它?你想限制數據只有那些有差異? – 2010-09-13 16:01:07
在性能和可讀性方面更好。我們正在做一些分析這些數據的工作,所以我們會根據需要進行過濾,但我們也可能會像上面那樣做一些事情。如果某些列相同,我們可能會將它們清空,以便我們可以更快地篩選結果集。 – Nix 2010-09-13 16:07:14
你想達到什麼目的?請提供更多信息。 – 2010-09-13 18:09:15