【发布时间】:2015-02-20 20:23:15
【问题描述】:
我有一个应用程序,它基本上采用一个列表(由用户提交)并为列表中的每个项目返回一组数据。我的主要问题是我有一个很大的集合,我存储在内存中以避免每次都必须查询数据库的成本,但我的查询仍然需要近 0.5 秒,而且时间太长了。
该集合是美国和加州的邮政编码,拥有近 100 万条记录。来自用户的列表从几十到几千条记录不等,我需要为每条记录都这样做,因此对于大型列表来说非常耗时。这是查询:
var resultList = PostalCodeList.Where(p => p.postalcode == userPostalCode).ToList();
邮政编码列表还有其他相关数据(国家、地区等)也需要返回给用户。一共5个字段。所有字符串。
数据的组织方式有可能给定值有 2 个结果,所以我需要考虑这一点。
任何想法或建议都会很棒。谢谢!
【问题讨论】:
-
如何显示您用于填充和/或返回列表将使用的数据的查询。您还检查了数据库是否针对该特定表进行了优化有需要添加的索引或缺少的索引..等等...??
-
我会使用
Dictionary来存储信息(而不是列表)。 -
@DJKRAZE 对于他所说的,列表使用的数据在内存中,因此程序不必为接收到的列表中的每个元素查询数据库
-
使用字典或哈希集,用于快速查找
-
我认为你的基本假设是不正确的。您不一定通过将所有内容保存在本地内存中来加快处理速度。像这样的查找是数据库旨在处理的。除非您通过鸽子使用 TCP/IP 访问数据库,否则我只会让数据库执行其设计的任务。
标签: c# performance linq list