我有一个包含多个连接的查询。当我执行查询时,它需要太长时间。你能建议我如何改进这个查询吗?
ALTER View [dbo].[customReport]
As
SELECT DISTINCT ViewUserInvoicerReport.Owner,
ViewUserAll.ParentID As Account , ViewContact.Company,
Payment.PostingDate, ViewInvoice.Charge, ViewInvoice.Tax,
PaymentProcessLog.InvoiceNumber
FROM
ViewContact
Inner Join ViewUserInvoicerReport on ViewContact.UserID = ViewUserInvoicerReport.UserID
Inner Join ViewUserAll on ViewUserInvoicerReport.UserID = ViewUserAll.UserID
Inner Join Payment on Payment.UserID = ViewUserAll.UserID
Inner Join ViewInvoice on Payment.UserID = ViewInvoice.UserID
Inner Join PaymentProcessLog on ViewInvoice.UserID = PaymentProcessLog.UserID
GO
答案 0 :(得分:1)
删除不同的。
这不是加入问题。问题是所有行必须进入临时表以找出哪些是双 - 如果你分析查询计划(程序员101 - 学会快速使用),你会发现连接可能不是大问题,而是不同的是。
和IIRC明显是USELESS,因为所有行都是唯一的...不是100%肯定,但字段列表似乎表明。
请尽快使用区别;)
答案 1 :(得分:0)
您应该看到查询执行计划并逐节优化查询。
整体优化过程包括两个主要步骤:
请参阅 - How To: Optimize SQL Queries了解分步说明。
和
答案 2 :(得分:0)
很难说如何在不知道每个表中有多少行数据,索引哪些列,您正在寻找什么性能以及您正在使用哪个数据库之类的情况下如何提高查询性能。< / p>
最重要的是: 1.确保连接中使用的所有列都已编制索引 2.确保查询执行计划表明您正在使用预期的索引