我有一個名爲Protocol的表,一個名爲Eligibility的表,和一個Protocol_Eligibilty表,它們將這兩個表映射在一起(一對多關係)。如果我想在協議表中創建條目的完美副本,並在Protocol_Eligibility表中創建所有需要的映射,從性能的角度來看,使用SQL視圖會有幫助嗎?協議將有大約1000行,資格將有大約200,我希望每個協議映射到約10個資格行和每個資格映射到協議中的100多行。什麼時候SQL視圖適合ASP.net MVC?
這裏就是我如何與視圖這樣做:
var pel_original = (from pel in _documentDataModel.Protocol_Eligibility_View
where pel.pid == id
select pel);
Protocol_Eligibility newEligibility;
foreach (var pel_item in pel_original)
{
newEligibility = new Protocol_Eligibility();
newEligibility.Eligibility = (from pel in _documentDataModel.Eligibility
where pel.ID == pel_item.eid
select pel).First();
newEligibility.Protocol = newProtocol;
newEligibility.ordering = pel_item.ordering;
_documentDataModel.AddToProtocol_Eligibility(newEligibility);
}
這是沒有的觀點:
var pel_original = (from pel in _documentDataModel.Protocol_Eligibility
where pel.Protocol.ID == id
select pel);
Protocol_Eligibility newEligibility;
foreach (var pel_item in pel_original)
{
pel_item.EligibilityReference.Load();
newEligibility = new Protocol_Eligibility();
newEligibility.Eligibility = pel_item.Eligibility;
newEligibility.Protocol = newProtocol;
newEligibility.ordering = pel_item.ordering;
_documentDataModel.AddToProtocol_Eligibility(newEligibility);
}
如果有10個左右的表格,如資格和適當數量的鏈接表,每個表中具有相同數量的條目,那麼怎麼辦?我有點擔心,因爲在「鏈接」表中克隆單個協議及其相關條目花費5秒左右的時間,並且現在表中的表格現在不足10%。 – sslepian 2010-03-29 23:44:00
複製條目與讀取條目完全不同,因爲在此過程中必須鎖定許多對象。要在高連接環境中保持性能,您可以採取的主要措施是確保索引在所有密鑰上的構造良好,並將所需的連接數量減少到最低要求(可能需要仔細地對數據進行非規範化) 。 – 2010-03-30 00:10:13