如何有效地使大型SQL查询到Matlab ?
15的观点(30天)
显示旧的评论
答案(1)
拉胡尔高尔
2015年10月29日
你好布莱恩,
它将帮助社区帮助你更好的如果你能分享更多的细节设置您正在使用。例如,数据库和司机,还位数:32或64位(在某些情况下)。
以下是一些观察与MySQL数据库使用JDBC驱动程序:
MySQL JDBC驱动程序在默认情况下检索完整的结果集,并将其存储在内存中。这可能导致的堆空间问题如果你正在与大的结果集的行数或大值不能JVM的堆空间分配所需的内存。
这个限制的解决方案之一是重建的SQL查询,包括“限制”和“抵消”结构。
限制条款来限制返回结果的数量在一个SQL语句。所以如果你在一个表中有1000行,但只想返回前10,你会这样做:
选择列于表
限制10
现在,假设你想要显示结果11日至20日。以抵消关键字一样简单,下面的查询将做的事:
从表选择列限制10抵消
使用下面的MATLAB代码使得使用这些SQL结构:
> >限制= <限制>;变化百分比限制选择有更好的响应时间
> >为fetchCount = 1: N
康涅狄格州=数据库(例如,用户名,密码,姓名,值);
查询= [“select * from表> <”int2str(限制)“抵消”int2str ((fetchCount-1) *限制)];
卑鄙的人= exec(康涅狄格州、查询);
rowlimit = < row_limit >;变化百分比rowlimit选择有更好的响应时间
而~ strcmp (curs.Data,没有数据的)
卑鄙的人=获取(杂种狗,rowlimit);
数据= curs.Data;
结束
关闭(康涅狄格州);
结束
从上面的代码在评论中提到的,请选择
限制
和
row_limit
这提供了更好的性能。的值限制和row_limit遵循钟形曲线的趋势,存在最优值,给出了更好的性能。例如,您可以使用10 ^ N的倍数取决于的行数。
希望这个有帮助。