【问题标题】:Slow SQL Server linq query慢速 SQL Server linq 查询
【发布时间】:2013-09-05 06:44:07
【问题描述】:

我有一个使用三个表的查询:Orders / ItemsByCustomers / Customers 像这样:

dim res = from o in Orders 
          where o.ItemsByCustomers.Customers.custCity = "Atlanta"
          select ...

显然,LINQ 为orders 表中的每一行查询数据库一次。

有没有一种方法可以更好地在 LINQ 中执行相同的查询,而无需使用带有连接的显式 SQL 命令?

【问题讨论】:

  • 是 LINQ to SQL 还是 LINQ to Entities?

标签: sql-server vb.net performance linq


【解决方案1】:

对于 linq to sql,应该是这样的:

Dim result = From a In dbCtx.Orders
                             Join b In dbCtx.ItemsByCustomers On b.ItemId Equals a.ItemId
                             Join c In dbCtx.Customers On c.CusomterId Equals b.CusomterId
                             Where c.custCity = "Atlanta"
                             Select a

【讨论】:

  • 使用显式的“join”语法将一次性返回所有必要的数据?这与“where a.itemsByCustomers.Customers”的行为会有所不同吗?
  • 这取决于您要检索的内容。如果您想要所有这些,那么您可以在最后选择所有匿名类型(而不是仅选择 a): Select New With{.A = a, .B=B, .C = C} ' 但不是理想的,因为所有的关系可能不会被保留。这与使用 a.ItemsByCustomers.Customers 不同,后者将保留所有关系,并根据将经历大量往返的关系查询数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多