2010-03-29 59 views
0

我有一个名为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); 

} 

回答

1

随着行数小,性能优化都不会作任何现代桌面或服务器硬件有显着的不同。除非这是一个嵌入式系统,对于资源非常有限的情况,否则最好在其他地方分配开发时间。

+0

如果有10个左右的表格,如资格和适当数量的链接表,每个表中具有相同数量的条目,那么怎么办?我有点担心,因为在“链接”表中克隆单个协议及其相关条目花费5秒左右的时间,并且现在表中的表格现在不足10%。 – sslepian 2010-03-29 23:44:00

+0

复制条目与读取条目完全不同,因为在此过程中必须锁定许多对象。要在高连接环境中保持性能,您可以采取的主要措施是确保索引在所有密钥上的构造良好,并将所需的连接数量减少到最低要求(可能需要仔细地对数据进行非规范化) 。 – 2010-03-30 00:10:13

3

视图在SQL Server中没有性能影响。从视图中选择或从视图所基于的查询中进行选择,在每个方面,相同。实际上,当查询计划被构建时,视图扩展为

视图可以影响性能的唯一时间是存在索引视图或Oracle中调用的物化视图。但索引视图性能增益来自索引,而非来自视图。事实上,从中选择可以利用索引视图的任何查询都会利用它,而不仅仅是从视图中进行选择。索引视图在非企业版本(Standard,Express)中未被考虑。实际上,每当讨论SQL Server或任何关系数据库中的性能时,问题就不再涉及如何设计查询,queiston总是关于如何设计模式。适当的聚集索引和适当的非聚集索引,那会给出性能而不是视图。

事实上,我没有在响应中提及linq,也没有MVC或ASP,因为在讨论SQL性能时,完全不相关

相关问题