最近,我开始致力于客户端解决现有 ASP.Net Web应用程序中的错误。其中一个缺陷是性能优化。我找到了一个名为[Applications]
的表,有160列。还有一个视图[vwApplications]
,在 SQL服务器数据库 中有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分钟。 我试过拆分查询和临时表来存储部分数据,最后将所有表合并为一个,但没有太大成功。
答案 0 :(得分:2)
美好的一天,
首先,我同意@Sean Lange的说法,没有足够的信息可以为您提供解决方案。至少我们需要DDL + DML。
与此同时,本文提供了一些控制JOIN顺序的信息和技巧。请检查这是否有助于您: http://social.technet.microsoft.com/wiki/contents/articles/25668.transact-sql-join-order.aspx
基本上,您应该检查执行计划和IO(使用SET STATISTICS IO ON),以便找到适合您数据库的最佳顺序。本文可以帮助您控制订单。请记住,对同一个实例上的两个不同SQL Server版本甚至两个不同数据库的相同查询可能表现不同
我希望这很有用: - )