C# 通过使用联接将LINQ查询转换为SQL查询以获得更好的性能
我想提高我的查询性能。当你看我前面的问题时,你会看到我的问题。我请求您修改我的LINQ查询。因为我需要更好的表现 但是我决定为我的LINQ查询研究SQL的相等性。因此,如何在考虑性能问题的情况下将低于LINQ的代码转换为SQL?因为我需要有更好的表现,这就是原因;这比以前更重要。愿意回答这个问题的人必须专注于C# 通过使用联接将LINQ查询转换为SQL查询以获得更好的性能,c#,sql,sql-server,linq,tsql,C#,Sql,Sql Server,Linq,Tsql,我想提高我的查询性能。当你看我前面的问题时,你会看到我的问题。我请求您修改我的LINQ查询。因为我需要更好的表现 但是我决定为我的LINQ查询研究SQL的相等性。因此,如何在考虑性能问题的情况下将低于LINQ的代码转换为SQL?因为我需要有更好的表现,这就是原因;这比以前更重要。愿意回答这个问题的人必须专注于 更好的性能 SQL平等 data.ForEach(x=> { foreach(x.SalesItems中的var项) { if(orderItemType.Any(y=>y==item.V
data.ForEach(x=>
{
foreach(x.SalesItems中的var项)
{
if(orderItemType.Any(y=>y==item.Value))
{
var x=DbContext.Set()
.包括(q=>q.Table1)
.包括(q=>q.Table2)
.FirstOrDefault(q=>q.Id==item.Key);
如果(x!=null)
{
var y=DbContext.Set()
.Include(q=>q.OrderDetail)
.FirstOrDefault(q=>q.PNRId==x.PNRId);
x、 OrderNo=x.OrderNumber;
x、 CustomerName=x.Table1.Name+“”+x.Table1.Name;
x、 OrderProviderName=y.OrderDetail.Id;
x、 城市代码=y.OriginCityCode+“-”+y.DestinationCityCode;
}
}
}
});```
我没有直接回答您的问题,但是在SQL Server下优化查询的一个技巧是使用分析“缺失索引”,一个好的索引可以使查询运行速度加快两倍
获取SQL字符串并将其复制到SQL Server Management Studio中,使用图标“显示估计的执行计划”运行查询
在此之后,如果您的查询需要创建一个索引,您将看到类似以下内容的绿色内容:
单击菜单“缺少索引详细信息”,并使用新名称undex执行索引
您将看到更好的性能,每次在项目中执行查询时都要检查这是一个提示。这是为什么?您尝试过.ToString()吗?它将返回将在数据源上运行的命令优化linq查询比将其重写为老式sqlI更好。为了得到更好的答案,我简化了我的问题。比你强。
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;
}
}
}
});```