簡體   English   中英

通過使用連接將 LINQ 查詢轉換為 SQL 查詢以獲得更好的性能

[英]Convert LINQ query to SQL query for better performance by using joins

我想提高我的查詢性能。 當您查看我之前的問題時,您會看到我的問題。 我要求您修改我的 LINQ 查詢。 因為我真的需要更好的表現。

但我決定為我的 LINQ 查詢查看 SQL 的相等性。 因此,如何在 LINQ 以下轉換為 SQL 以解決性能問題? 因為我需要有更好的表現,這就是原因; 它比以前更重要。 願意回答這個問題的人必須專注於

  1. 更好的性能
  2. SQL 相等。
data.ForEach(x =>
{
    foreach (var item in x.SalesItems)
    {
        if (orderItemType.Any(y => y == item.Value))
        {
            var x = DbContext.Set<Customer>()
                            .Include(q => q.Table1)
                            .Include(q => q.Table2)
                            .FirstOrDefault(q => q.Id == item.Key);
            if (x != null)
            {
                var y = DbContext.Set<Order>()
                                .Include(q => q.OrderDetail)
                                .FirstOrDefault(q => q.PNRId == x.PNRID);

                x.OrderNo = x.OrderNumber;
                x.CustomerName = x.Table1.Name + " " + x.Table1.Surname;
                x.OrderProviderName = y.OrderDetail.Id;
                x.CityCode = y.OriginCityCode + " - " + y.DestinationCityCode;
            }
        }
    }
});```

我不直接回答您的問題,但是在 SQL 服務器下優化查詢的提示是使用分析“缺失索引”,一個好的索引可以更快地運行您的查詢。

獲取 SQL 字符串並將其復制到 SQL Server Management Studio 中,使用“顯示估計執行計划”圖標運行查詢

圖標顯示預計執行計划

在此之后,如果您查詢需要創建一個 INDEX,您會看到類似綠色的內容: 缺失索引

點擊菜單“Missing Index Details”並使用新名稱undex執行索引

您會看到更好的性能,並且每次在項目中執行查詢時都要檢查一下。

暫無
暫無

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

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