【问题标题】:Convert LINQ query to SQL query for better performance by using joins使用联接将 LINQ 查询转换为 SQL 查询以获得更好的性能
【发布时间】:2020-03-14 17:16:44
【问题描述】:

我想提高我的查询性能。当您查看我之前的问题时,您会看到我的问题。我要求您修改我的 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;
            }
        }
    }
});```

【问题讨论】:

  • 为什么会投票?
  • 你试过 .ToString() 吗?它将返回将在数据源上运行的命令
  • 优化 linq 查询比将其重写为老式 sql 更好
  • 我简化了我的问题以获得更好的答案。比你。

标签: c# sql sql-server linq tsql


【解决方案1】:

我不直接回答您的问题,但在 SQL Server 下优化查询的一个提示是使用分析“缺失索引”,一个好的 INDEX 可以将您的查询运行速度提高一倍。

获取 SQL 字符串并将其复制到 SQL Server Management Studio 中,使用“显示估计的执行计划”图标运行您的查询

在此之后,如果您查询需要创建一个 INDEX,您会看到类似这样的绿色:

点击菜单“Missing Index Details”并使用新名称undex执行索引

您会看到更好的性能,这是每次在项目中执行查询时都要检查的提示。

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多