【发布时间】:2013-04-15 17:45:11
【问题描述】:
我有这两张桌子
ExpiredAccount Account
-------------- ---------------
ExpiredAccountID AccountID
AccountID (fk) AccountName
... ...
基本上,我想返回一个 ExpiredAccounts 列表,在结果中显示 AccountName。
我目前使用
var expiredAccounts = (from x in ExpiredAccount
join m in Account on x.AccountID equals m.AccountID
select m.AccountName).ToList()
这很好用。但是,这需要的时间太长。 expiredAccounts (
我是否可以加快查询速度,或者是否可以通过另一种方式来更有效地执行此操作,无论是否使用 LINQ?
【问题讨论】:
-
这个 linq 是对象还是 ORM?如果是 ORM,您使用的查询提供程序是什么?
-
您是否在基础表上应用了任何索引(例如,
AccountID列)? -
@Servy 提供者是
System.Data.SqlClient@mellamokb 我不是数据库专家,但它说 PK_Account(集群)。我不知道这是否有帮助。 -
只是出于好奇,
ExpiredAccount和Account来自哪里?它们是局部变量吗?你能展示它们是如何填充的代码吗?例如,您定义这些变量的方式可能会导致应用程序将两个表加载到内存中,并在内存中应用连接,而不是向后端发送简化的查询。 -
@mellamokb 只是常规代码优先方法:
public IDbSet<Account> Accounts { get; set; }但是,是的,就像在解决方案中一样添加相关表的virtual属性确实起到了作用。加载时间几乎是瞬间的。
标签: c# linq optimization query-optimization