我有一个进程导入每日产品注册文件,并将它们添加到我们的数据库中.最初,此过程将针对每个记录多次查询数据库,以确定如何处理数据.
为了加快此过程并防止尝试使用使用相同数据库的报告站点的人可能出现的任何超时问题,我已更改代码以将一些表拉入词典,然后迭代他们看看客户/地址/经销商是否存在,如果是,则从字典的键中提取Id,或者将其插入表中,如果不存在则插入字典.
但是,我目前发现这比我每次注册多次查询数据库要慢.我能想到的一个可能的原因是我的词典非常庞大(一个有800万条目,另一个有1100万条).
这是我正在做的一个例子:
For Each kvp As KeyValuePair(Of Int64, String) In dCust
If kvp.Value = firstName & "|" & lastName & "|" & companyName & "|" & addrId & "|" & typeID & "|" & phone & "|" & email Then
custId = kvp.Key
Exit For
End If
Next
Run Code Online (Sandbox Code Playgroud)
这本词典里面有大约1100万条记录.
我的一个同事的想法是Dictionary.ContainsValue()在循环之前运行,看它是否在那里.如果它不完全跳过循环.我只想尝试这个,如果它运行得比仅仅执行循环本身更快,如果他们花费相同的时间我没有看到基本上运行循环两次的一点.
所以我的问题是:
Dictionary.ContainsValue()在尝试循环之前运行a会更快,还是系统会将它们解释为相同的东西,从而使我的时间加倍?