日期:2014-05-17  浏览次数:20839 次

初学者请求一个效率问题
比如一个系数表sql server
ID    名称     系数
1      a            0.1
2      b           0.2
3      c            0.3
我要在程序中循环多次使用不同的系数,下面那个方法好
1。每次循环直接从服务器查询相应的记录
2。把表全部读出来填充到table里或列表里,每次循环用linq查询这个table

------解决方案--------------------
如果你表不是更新频繁的而且经常如你所说的经常查询用到,个人还是喜欢一次性取出来然后在已有的数据集里查询,那样不用频繁的访问数据库。
------解决方案--------------------
最简单的是一次读取出来,然后在内存中查询。
如果数据量很大,可以考虑缓存一部分到内存中。
------解决方案--------------------
2 比 1好,频繁使用,最好一次读取,然后把数据缓存。
------解决方案--------------------
引用:
2 比 1好,频繁使用,最好一次读取,然后把数据缓存。
这是正确的
------解决方案--------------------
引用:
比如一个系数表sql server
ID    名称     系数
1      a            0.1
2      b           0.2
3      c            0.3
我要在程序中循环多次使用不同的系数,下面那个方法好
1。每次循环直接从服务器查询相应的记录
2。把表全部读出来填充到table里或列表里,每次循环用linq查询这个table ……

比如说,你可以在内存里面搞一个List,每次查询,如果在List里面有,就直接返回,否则去数据库查,查出来(或者把相近的一批数据都查出来,比如查id=3的,取出id=3~103的)放入List,而当List超过一定大小,又把最先添加/最不常用的从List中删除掉。这样性能和存储都兼顾了。