如何降低查询占用的内存?

opast 2007-08-10 09:08:10
运行Sele查询并将结果显示在Grid中,狂耗内存,任务管理器显示占用100多M
但是最小化查询和查询结果表单后,内存占用降为4M多,再次最大化两个表单,内存占用也不会升高多少

请教一下,怎么在不需要最小化表单的情况下降低占用内存?
...全文
347 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2007-08-13
  • 打赏
  • 举报
回复
改成这样试试:


NowData=thisform.combo1.value
select * from &NowData where at(alltrim(thisform.text1.value),品名)>0 and at(alltrim(thisform.text2.value),产地)>0 into TABLE searchtemp
CLOSE DATA
USE searchtemp
thisform.grid1.RecordSource ="searchtemp"
opast 2007-08-13
  • 打赏
  • 举报
回复
刚刚又试了下,运行包含在顶层表单中的非顶层表单,我那段代码没问题,会降低内存占用
但是通过程序,比如说建一个MainPro.prg,内容为Do Form Main,通过程序运行的话就不行
十豆三 2007-08-13
  • 打赏
  • 举报
回复
thisform.grid1.RecordSource =NULL
NowData=thisform.combo1.value
select * from &NowData where at(alltrim(thisform.text1.value),品名)>0 and at(alltrim(thisform.text2.value),产地)>0 into TABLE searchtemp
CLOSE DATA
USE searchtemp
thisform.grid1.RecordSource ="searchtemp"
opast 2007-08-13
  • 打赏
  • 举报
回复
close data
提示找不到别名 searchtemp

我搞不懂单独运行这个表单和运行包含在顶层表单中的非顶层表单有什么区别吗?
netdl 2007-08-12
  • 打赏
  • 举报
回复
用SYS(3050) - Set Buffer Memory Size
opast 2007-08-12
  • 打赏
  • 举报
回复
和表无关,我更加具体一点吧,已经解决部分问题,但是有一点很奇怪

我表单search(在顶层表单中)一个查询按钮有以下代码
NowData=thisform.combo1.value
select * from &NowData where at(alltrim(thisform.text1.value),品名)>0 and at(alltrim(thisform.text2.value),产地)>0 into cursor searchtemp
select (juststem(nowdata))
use
select searchtemp
thisform.grid1.RecordSource ="searchtemp"
当单独运行该表单时,
select (juststem(nowdata))
use
起了作用,即释放了该部分查询占用的内存
当通过程序运行主表单main(顶层表单),main打开的同时自动打开子表单search,再运行查询时,居然发现占用的内存并不会比释放,请问原因何在?
十豆三 2007-08-10
  • 打赏
  • 举报
回复
查询另一个表试试,看看是不与表有关。
opast 2007-08-10
  • 打赏
  • 举报
回复
我知道,我的意思是在查询结束后,降低内存占用
因为查询结束后最小化窗口会降低内存占用
所以我想是不是可以在查询结束后用什么命令可以降低内存占用,而不需要以最小化窗口的方式降低
wwwwb 2007-08-10
  • 打赏
  • 举报
回复
不能单纯从占用内存来讲,还要从执行时间、效率上看。
opast 2007-08-10
  • 打赏
  • 举报
回复
换个简单的
比如说我在命令行下运行以下查询
sele * from data.dbf where AT("上海",产地)>0
VFP9占用内存一下子由9M升为100多M
但是最小化VFP9后(不关闭查询结果窗口),内存占用降为1M多,再次最大化VFP9(不关闭查询结果窗口),内存占用也不会升高多少
请教在不最小化VFP9(在程序中对应的不最小化表单)情况下,怎样用命令降低内存占用(100多M——>几M)?
wwwwb 2007-08-10
  • 打赏
  • 举报
回复
没有看到记录及SQL语句,只能建议:
1、建立合理的索引在查询字段上;
2、合理的表结构、SQL语句,尽量使用内外、连接,少用IN、EXIST。
十豆三 2007-08-10
  • 打赏
  • 举报
回复
你要找出你的表单最大化与最小化有什么区别,比如有什么循环程序在运行等。

再有不运行查询,看看最小化与最大化的区别。

再在命令窗口中单独运行查询语句试试。

也就是说排除一下是查询语句造成的,还是表单中其他控件或代码造成的,然后再下手解决。

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧