怎样能快速的在DELPHI中对一个DBF表查找记录和排重(200分)

  • 主题发起人 主题发起人 一剑封喉
  • 开始时间 开始时间

一剑封喉

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,在DELPHI中对一个DBF表进行查找相关记录并排重,因为数据量很大,大约十几万的记录,用
SELECT DISTINCT * FROM 速度太慢,因为需要的数据也很多,所以小弟没有办法,请大侠指教一二。多谢
 
查找用function local(查找的值,查找的字段,[]):integer;
如果返回值为0,查找失败,否则将查找到的记录作为当前记录
排序table.sort:='需要排序的字段名';如果是降序table.sort:='需要排序的字段名 desc'
 
SQL要写好,另外,你的数据库是DBF,本生效率就慢呀.
 
用*号查询比用字段名查询慢,用存储过程和视图也可以提高速度,不过数据量太大的话,
怎么做都要耗点时间的
 
terry_lzs兄,你说的local怎么用,能否解释一下,多谢,如果方便可否举个例子。另外我说的是排重,而不是排序。
请指教
 
另外,我用LOCATE记录一大就会很慢,不知各位有没有更好的处理方法。
 
呵呵,对不起,我字大错了,我的意思就是用locate
还有,什么是排重?
 
排重,大概是排除重复的数据的意思吧,所以用 Distinct 。没有太好的办法,尽量把不需要
的字段去掉,用需要的字段代替 *。
 
各位大侠,小弟紧急,麻烦你们快点回复,必有重谢,这么多富翁,怎么就没有人可怜可怜我呢?
 
用DBF处理大数据量要想获得很高的效率是不可能的,而且如果是用Table读数据的话,那速度
更是慢得出奇了,Locate虽说经过了一定的优化,但不能解决根本问题。
建议还是用SQL语句来查找数据,查找时尽量减去不必要的字段,少用 select *,其它的
好象也没有什么好办法了吧。
 
1.尽量减去不必要的字段
2.用pack 去除无用的数据
除此好象也没有什么好办法
 
SQL SERVER 好像可以在你的排重字段上建立一个不查重的唯一值索引
SELECT 时指定该索引即可快速查询
 
madm兄,那么在DELPHI中的QUERY控件的写SQL语句能否建立索引呢?请告知,多谢
 
请不要使用locate的方法,因为使用table的控件,不管进行什么工作,他都会把整个数据表
select出来(因为执行table的open是一定的),不幸你可以使用SQL MONITOR来比较一下,TQUERY
比TABLE组件快,但读取机大量的数据,而的少量的和结果还可以使用STORED pROCEDURE
TUpdateSql组件来完成
 
那么在DELPHI中的QUERY控件的写SQL语句能否建立索引呢?

CREATE INDEX ......
 
多人接受答案了。
 
后退
顶部