Asp.net 优化过多的多重左连接
最近,我开始在客户端解决现有ASP.Net应用程序中的错误。其中一个缺陷是性能优化。我发现一个名为Asp.net 优化过多的多重左连接,asp.net,sql-server,Asp.net,Sql Server,最近,我开始在客户端解决现有ASP.Net应用程序中的错误。其中一个缺陷是性能优化。我发现一个名为[Applications]的表,有160列。还有一个视图[vwApplications],在SQL server数据库中有680列和80个左联接。 我无法减少列或联接,因为它已经在应用程序的其他部分或其他应用程序中使用 例如: select a.column1, a.column2......... -- upto 680 columns.. from Applications a left jo
[Applications]
的表,有160列。还有一个视图[vwApplications]
,在SQL server数据库中有680列和80个左联接。
我无法减少列或联接,因为它已经在应用程序的其他部分或其他应用程序中使用
例如:
select a.column1, a.column2......... -- upto 680 columns..
from Applications a
left join table1 on a.id = table1.id
left join .....
left join .... -- upto 80 left joins
所有表都有一个主键为的标识列。
我必须优化这个视图,因为执行10000条记录需要1分钟。
我尝试过将查询和临时表拆分以存储部分数据,并最终将所有表合并为一个表,但没有多大成功。祝您好运
首先,我同意@Sean Lange的观点,即没有足够的信息为您提供解决方案。至少我们需要DDL+DML 同时,本文给出了一些控制连接顺序的信息和技巧。请检查这是否有助于您: 基本上,您应该检查执行计划和IO(使用SET STATISTICS IO ON),以便找到适合数据库的最佳顺序。本文可以帮助您控制订单。请记住,在两个不同SQL Server版本上的同一查询,甚至在同一实例上的两个不同数据库上的同一查询,其行为可能不同
我希望这是有用的:-)这里没有足够的信息提供帮助。我们不知道表是什么样子,当前的查询,你想要输出什么等等。我们只知道你有一个视图,你怀疑它很慢,你想让它更快。索引可能会有帮助,但这听起来像是
Applications
表和vwApplications
视图中的列数太多了……需要检查的一件事是优化超时,这可能发生在这个复杂的连接中。你可以从计划中第一个对象的属性中找到终止的原因。不知道细节,很难给出建议。对于正常回迁,使用temp将逻辑拆分为多个部分。表可以工作——对于视图,是否可以对整个数据或至少部分数据使用索引视图?where子句中是否有任何筛选条件?任何可能用于索引的内容?此外,如果没有执行计划,就无法知道如何调整这只野兽。