编程论坛's Archiver

hkhy2 发表于 2008-5-7 17:37

VFP 打开表时内存猛增问题

VFP中使用命令行打开表 Select * from table_one where field_one = '1'
// filed_one 为主键, 也就是我要查找的记录只有一条
// 表table_one 中有100万条记录。

结果是可以查找到该记录, 但是VFP占用的内存会猛增

我想是因为VFP数据库是把table_one 的所有记录都加载到内存了。

但我不想因为查找一条记录就把整个表加载到内存
各位, 请问有什么办法解决吗? 谢谢

是否有某些属性可以设置这个的。

谢谢各位了

hkhy2 发表于 2008-5-8 09:26

怎么只有人看没有人能回答?
我想在开发过程中, 这样的问题我们是一定要考虑的

啸凡 发表于 2008-5-8 22:46

我想,暂时来说,表文件应该只能是整个打开的。怎样只打开一小部分?我想得去问那个叫盖什么的人了。

baichuan 发表于 2008-5-9 07:54

表可以只打开一部分,你可以先取出一部分到临时表!

hkhy2 发表于 2008-5-10 19:41

请问baichuan 怎样用那个临时表的

VFP中使用命令行打开表 Select * from table_one where field_one = '1'
// filed_one 为主键, 也就是我要查找的记录只有一条
// 表table_one 中有100万条记录。
如果先把100万条记录加载到内存, 再进行select操作的确不合理的
难道一个1G的表, 也加载到内存吗 对不对

wzxc 发表于 2008-5-11 21:31

[quote][bo]以下是引用 [un]baichuan[/un] 在 2008-5-9 07:54 的发言:[/bo]

表可以只打开一部分,你可以先取出一部分到临时表! [/quote]

请把代码发上来,看看如何部分打开表?
use oldtable
copy to newtale
or
select * from oldtable where ....into table newtabel
也会将oldtable打开。
然后
use in oldtable
关闭算了。

baichuan 发表于 2008-5-12 08:24

建立索引,取前一部分;OK?

Tiger5392 发表于 2008-5-12 11:49

同意6楼.
Select * from table_one where field_one = '1'
Use in Table_one

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.