如何提高这个功能的速度?我只有这点分了(20分)

  • 主题发起人 主题发起人 笨人
  • 开始时间 开始时间

笨人

Unregistered / Unconfirmed
GUEST, unregistred user!
我要处理的表有近200万条记录
想用字段num 来记录他们的顺序,我使用了下面的方法,可是需要很长时间
如何快速实现这个功能,请诸位帮忙。
var
counter:integer;
with table1 do
begin
first;
while not eof do
begin
edit;
fieldbyname('num').value:=counter;
counter:=counter+1;
next;
end;
 
使用存储过程
 
什么数据库,有的数据库,有自增字段,那个比较快一点
 
在单机上运行,使用存储过程能提高速度吗?
 
twos,是 foxpro

 
假设你的表为 T1, 主键为f0, 要更新的字段为 num
写一个存储过程,内容大致为:
if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#tmpTable'))
drop table #tmpTable
else
select f0, identity(int, 1, 1) as f1 into #tmpTable from T1
update T1 set num=a.f1 from #tmpTable a where T1.f0=#tmpTable.f0

 
只有这些办法了吗?使用存储过程是最好的办法吗?
 
当然了,这种一锤子买卖的事情用存储过程来最快!
不过foxpro是否支持,那可是个疑问。
你用delphi来做更新的话,则应用程序要通过odbc、bde、ado(取决于你使用的连接方式)
来和数据库进行数据交换,这样就存在着资源消耗的问题。
 
多人接受答案了。
 

Similar threads

后退
顶部