使用LINQ查询内存中的DataSet直接查询SQL表(字典表) - 性能

时间:2013-04-12 13:24:54

标签: sql-server linq memory datatable

我找不到确切答案,所以:

想象一下按照以下方式构建的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. 你的好主意

我的好奇心等待着答案......

1 个答案:

答案 0 :(得分:2)

最后我花了一点时间编写一个简单的测试应用程序,但使用的是实际数据,因此在这种情况下结果非常相关。

所以 - 一旦我将大约4k记录预加载到Dictionary并进行了100k循环,结果是检索数据 00:00:00.950095 !!

第二次我做了相同的100k循环,每次询问数据库,结果如下: 00:02:32.81 ......

似乎很容易做出选择。