Foxtable(狐表)用户栏目专家坐堂 → sqlselect如何释放


  共有2563人关注过本帖树形打印复制链接

主题:sqlselect如何释放

帅哥哟,离线,有人找我吗?
rjh4078
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
sqlselect如何释放  发帖心情 Post By:2016/5/28 14:54:00 [只看该作者]

有段代码是要循环执行一个sqlselect

 

for

条件1

for

条件2

sqlselect

next

next

一执行 发现内存占用就过了1个G 还在继续上升 我想问下 如何将已判断过的sqlselect行释放掉?


 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/5/28 15:10:00 [只看该作者]

没有办法释放的,只能事件运行完后由.net的垃圾回收机制自行回收。

尽量一次性返回必要的数据,而不是在循环体中不断连接数据库,对客户端和数据库都不是一种好的体验

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/5/28 19:54:00 [只看该作者]

因为是想通过查询数据库是否存在相同记录来决定是否添加当前记录 所以只能加完一次再查一次


 回到顶部
帅哥哟,离线,有人找我吗?
xiaoohoo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:281 积分:2264 威望:0 精华:0 注册:2013/12/2 13:34:00
  发帖心情 Post By:2016/5/28 20:06:00 [只看该作者]

为什么不用Compute

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/5/28 22:25:00 [只看该作者]

思路不对,向SQL查询次数越少越好。如果需要比较,那么你就一次加载需要比较的数据到内存,这样使用SELECT速度快了很多。

你这个比较过程肯定可以大幅度优化的,可以好好整理思路。

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/5/29 19:59:00 [只看该作者]

以下是引用jspta在2016/5/28 22:25:00的发言:
思路不对,向SQL查询次数越少越好。如果需要比较,那么你就一次加载需要比较的数据到内存,这样使用SELECT速度快了很多。

你这个比较过程肯定可以大幅度优化的,可以好好整理思路。
我考虑过这个问题 使用临时表 我的情况是这样的 比如 我现在查询表中是否有A记录 如果没有就添加 第一次查询的时候 表中是没有A的 然后执行了添加记录 如果再去查询临时表 还是没有A记录的 这样就死循环了 但其实现在数据库中已经添加了A记录了

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/29 21:50:00 [只看该作者]

有必要在循环里面sqlSelect吗?一次性sqlSelect出来不行?做具体例子说明问题。

 

如果要强制回收内存,就直接执行代码 GC.Collect


 回到顶部