【发布时间】:2026-01-15 19:20:04
【问题描述】:
如何优化这个查询?
// This will return data ranging from 1 to 500,000 records
List<string> products = GetProductsNames();
List<Product> actualProducts = (from p in db.Products
where products.Contains(p.Name)
select p).ToList();
如果我发送一个包含 44,000 个字符串的列表,则此代码大约需要 30 秒才能填充 actualProducts,但不知道 500,000 条记录需要什么。 :(
有什么方法可以调整这个查询?
注意:每次调用几乎都需要这么多时间(忽略第一次慢速 edmx 调用)
【问题讨论】:
-
GetProductsNames从哪里获取信息? -
为什么不在查询中使用联接?
-
@JonSkeet 来自文本文件。
-
包含 500,000 个产品的文本文件?你为什么不使用数据库?
-
文本文件中的记录是从另一台服务器导出的,因此我们必须检查本地商店中有多少产品。 (只是为了同步项目)
标签: c# linq optimization