Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 优化过多的多重左连接_Asp.net_Sql Server - Fatal编程技术网

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

最近,我开始在客户端解决现有ASP.Net应用程序中的错误。其中一个缺陷是性能优化。我发现一个名为
[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版本上的同一查询,甚至在同一实例上的两个不同数据库上的同一查询,其行为可能不同

  • 在大多数情况下,最好先加入较小的集合
  • 记住在连接操作符之前测试过滤数据(使用简单的连接SQL Server查询引擎可以构建一个良好的执行计划并很好地组织操作顺序。但是在具有大量连接的复杂查询中,它会失败,在某些情况下我们需要控制顺序)

  • 我希望这是有用的:-)

    这里没有足够的信息提供帮助。我们不知道表是什么样子,当前的查询,你想要输出什么等等。我们只知道你有一个视图,你怀疑它很慢,你想让它更快。索引可能会有帮助,但这听起来像是
    Applications
    表和
    vwApplications
    视图中的列数太多了……需要检查的一件事是优化超时,这可能发生在这个复杂的连接中。你可以从计划中第一个对象的属性中找到终止的原因。不知道细节,很难给出建议。对于正常回迁,使用temp将逻辑拆分为多个部分。表可以工作——对于视图,是否可以对整个数据或至少部分数据使用索引视图?where子句中是否有任何筛选条件?任何可能用于索引的内容?此外,如果没有执行计划,就无法知道如何调整这只野兽。