您的位置:首页 > 数据库

调试一段数据库调用的时候,内存彪到1.5G。请教为啥捏?

2010-01-08 04:25 183 查看
这段神奇的sql是:

string sql = "SELECT USR_BOX.SHOPCODE AS SHOPCODE, SYS_SHOPINFO.SHOPNAME AS SHOPNAME, USR_PROFILE.USERNAME AS USERNAME, ITM_ITEM.ITEMNAME AS ITEMNAME, STK_INVENTORYLOG.ITEMCODE AS ITEMCODE, STK_INVENTORYLOG.MERCHANTCODE AS MERCHANTCODE, STK_INVENTORYLOG.LOGSTOCKQTY AS LOGSTOCKQTY, STK_INVENTORYLOG.LOGCODE AS LOGCODE FROM ( ( ( ( STK_INVENTORYLOG INNER JOIN USR_PROFILE AS USR_PROFILE ON STK_INVENTORYLOG.MERCHANTCODE = USR_PROFILE.USERCODE ) INNER JOIN USR_BOX AS USR_BOX ON STK_INVENTORYLOG.SHOPCODE = USR_BOX.SHOPCODE ) INNER JOIN SYS_SHOPINFO AS SYS_SHOPINFO ON USR_BOX.SHOPCODE = SYS_SHOPINFO.SHOPCODE ) INNER JOIN ITM_ITEM AS ITM_ITEM ON STK_INVENTORYLOG.ITEMCODE = ITM_ITEM.ITEMCODE )";

调用的代码是:

代码

INoebeCommand command = NoebeManager.Instance.NoebeCommand;
//command.SQL = "DELETE from STK_INVENTORYLOG WHERE LOGCODE < 'STK20110108015119545301' AND LOGCODE >= 'STK20100108015119545301'";
string sql = "SELECT USR_BOX.SHOPCODE AS SHOPCODE, SYS_SHOPINFO.SHOPNAME AS SHOPNAME, USR_PROFILE.USERNAME AS USERNAME, ITM_ITEM.ITEMNAME AS ITEMNAME, STK_INVENTORYLOG.ITEMCODE AS ITEMCODE, STK_INVENTORYLOG.MERCHANTCODE AS MERCHANTCODE, STK_INVENTORYLOG.LOGSTOCKQTY AS LOGSTOCKQTY, STK_INVENTORYLOG.LOGCODE AS LOGCODE FROM ( ( ( ( STK_INVENTORYLOG INNER JOIN USR_PROFILE AS USR_PROFILE ON STK_INVENTORYLOG.MERCHANTCODE = USR_PROFILE.USERCODE ) INNER JOIN USR_BOX AS USR_BOX ON STK_INVENTORYLOG.SHOPCODE = USR_BOX.SHOPCODE ) INNER JOIN SYS_SHOPINFO AS SYS_SHOPINFO ON USR_BOX.SHOPCODE = SYS_SHOPINFO.SHOPCODE ) INNER JOIN ITM_ITEM AS ITM_ITEM ON STK_INVENTORYLOG.ITEMCODE = ITM_ITEM.ITEMCODE )";
command.SQL = sql;
//command.Execute();
DataTable table = command.ExecuteReader();
SmartConsole.Write(table);

就是自己封装了sqlclient然后查询。

大概就是4张表的inner join。数据库有数据2w(应该很少了。。。)数据库使用sqlserver 2005。

结果不到半分钟,内存就彪到了1.5G了。而且还没有返回。

我用profiler发现:



最占资源的是string。再往里面看:



貌似是.net里面造成的,不是我的问题。

请教这个到底是咋回事。如果是微软的问题,能否问微软拿精神损失费呢?

补充几点

后来我修改了sql,发现问题在USR_BOX这张表。如果不做innerjoin,则不存在内存泄露。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐