簡體   English   中英

由於SQL查詢導致SQL Server性能問題

[英]Performance issue with SQL server due to sql query

需要一些幫助來解決此錯誤:

查詢處理器用盡了內部資源,無法生成查詢計划。 這是罕見的事件,僅在極其復雜的查詢或引用大量表或分區的查詢中才會發生。 請簡化查詢。 如果您認為收到此消息是錯誤的,請聯系客戶支持服務以獲取更多信息。

SQL查詢:(我只輸入其中一個查詢。我運行了9個這樣的查詢)

var query1 = from article in _db.Articles
             from scl in article.Scls
             where article.publishDate < DateTime.Now
                && article.removalDate > DateTime.Now
                && article.finished == true
                && article.flagged== true
                && listOfScl.Contains(scl.id)
             select article;

var query2 = from article in _db.Articles
             from com in article.Coms
             where article.publishDate < DateTime.Now
                && article.removalDate > DateTime.Now
                && article.finished == true
                && article.flagged== true
                && listOfCom.Contains(com.id)
             select article;

query = (query1.Union(query2)).Distinct();

不知道查詢工作正常有什么問題,但在SQL Server上卻出現了一些性能問題。

我需要一些幫助來避免此類錯誤,並在不使用UNION情況下重新編寫此SQL查詢。

提前致謝。

另請注意,默認情況下LINQ執行UNION,這將消除重復項, 因此不需要Distinct,這可能會提高性能。

“不使用UNION重寫此SQL查詢。” 這怎么樣?

var query1 = from article in _db.Articles
             from scl in article.Scls
             where article.publishDate < DateTime.Now
                && article.removalDate > DateTime.Now
                && article.finished == true
                && article.flagged== true
                && ( 
                     listOfScl.Contains(scl.id)
                     || listOfCom.Contains(com.id) 
                   )
             select article;

您可以嘗試執行此操作,這樣就不需要與眾不同了。 但是它將涉及一個子查詢,因此很難說如果不進行測試,哪些會更好地執行:

var query1 = _db.Articles.Where(article => article.publishDate < DateTime.Now
                && article.removalDate > DateTime.Now
                && article.finished == true
                && article.flagged== true
                && ( article.Scls.Any(s=> listOfScl.Contains(s.id))
                     || article.Coms.Any(c=> listOfCom.Contains(c.id))
                   )
                );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM