我找不到确切答案,所以:
想象一下按照以下方式构建的3列字典表:
int | string1 | string2(其中int + string1是pk)
表有超过20k行,并且pk
非常广泛地查询它以返回string2
值
这里最好的方法是什么?
1。直接LINQ数据库请求
亲:通过PK查询确实非常快
缺点:每秒可能有几百次呼叫到数据库服务器
2. 将数据预加载到DataTable对象
pro:所有数据都在本地.net内存中(无需每次都去db)
缺点: LINQ的使用需要在AsEnumerable()
上调用DataTable
,它为LINQ查询返回可枚举对象DataSource
。 LINQ查询对象在这里比调用DB更有效吗?这里使用PK约束吗?
3。将所有表格预加载到Dictionary<string, string>
,其中密钥为int.ToString()+string1
,值为string2
pro:始终使用PK约束,字典直接使用正确的值
进行响应缺点:是否优于1或2?
4. 你的好主意
我的好奇心等待着答案......
答案 0 :(得分:2)
最后我花了一点时间编写一个简单的测试应用程序,但使用的是实际数据,因此在这种情况下结果非常相关。
所以 - 一旦我将大约4k记录预加载到Dictionary并进行了100k循环,结果是检索数据 00:00:00.950095 !!
第二次我做了相同的100k循环,每次询问数据库,结果如下: 00:02:32.81 ......
似乎很容易做出选择。