【发布时间】:2019-11-11 12:41:45
【问题描述】:
我有大约 100,000 张借记卡的列表,我想在更新与卡相关的交易列表时找到相关卡。我想知道是先加载整个卡片列表并从加载的列表中查找卡片还是每次使用 Entity Framework 执行数据库查询更有效?
//Scenario 1:
var cards = db.Cards.ToList();
foreach (var transaction in newTransactions)
{
var card = cards.FirstOrDefault(x => x.CardNumber ==
transaction.TransactionMean);
}
//Scenario 2:
foreach (var transaction in newTransactions)
{
var card = db.Cards.FirstOrDefault(x => x.CardNumber ==
transaction.TransactionMean);
}
【问题讨论】:
-
我确信这可以以更智能的方式完成,例如无需循环即可获取您需要的所有数据的查询。您可以添加更多代码,例如您如何处理
card或交易? -
数据库经过优化,可以使用统计信息和索引进行快速搜索。如果 C#、Java 或其他高级编程语言在内存上工作,它们可能会更快,但您需要考虑将数据加载到内存中的时间、数据库服务器之间的延迟、循环/搜索方法等。所以在大大多数情况下,将搜索任务委托给数据库并仅获取结果会更快。
标签: c# sql-server asp.net-mvc entity-framework