如何提高检查速度??(检查是否有重复记录,)(25分)

  • 主题发起人 主题发起人 richgold
  • 开始时间 开始时间
R

richgold

Unregistered / Unconfirmed
GUEST, unregistred user!
检查是否有字段xh,bh值相同之重复记录,如果几千条记录,检查速度太慢,如何提高速度?
程序如下:procedure TForm1.Check_Button2Click(Sender: TObject);
var xh,bh,rd1,errorinfo:string;//字段:rd1:每条记录的序号
mk1:tbookmark;
begin
add_record;//自定义过程:给每一条记录增加序号
table1.first;
errorinfo:='';
Trackbar1.position:=0;//用于显示检查进度
Trackbar1.max:=rd;//rd为总记录数
Trackbar1.frequency:=rd div 10;
edit10.text:=inttostr(Table1.IndexFieldCount);
table1.DisableControls;
while not table1.eof do
begin
mk1:=table1.getbookmark;
rd1:=table1.Fields[0].asstring;
xh:=table1.Fields[1].asstring;
bh:=table1.fields[2].asstring;
table1.Next;
while not table1.eof do
begin
if (xh=table1.fields[1].asstring) and (bh=table1.fields[2].asstring) then
errorinfo:=errorinfo+rd1+'和'+table1.fields[0].asstring+':'+table1.fields[1].asstring+':'+table1.fields[2].asstring+char(13);
table1.next;
end;
table1.gotobookmark(mk1);
table1.Next;
table1.freebookmark(mk1);
Trackbar1.position:=Trackbar1.position+1;
end;
if errorinfo<>'' then
showmessage('以下记录重复:'+char(13)+errorinfo)
else
showmessage('无重复记录,检查完毕!');
table1.EnableControls;
end;
 
为什么不用sql 查询?
 
用select xh from table group by xh,bh having count(xh)>1来查询,
如果有结果,则存在重复记录.
 
用SQL语句吧,如下(以SQL Server 为例)

Select xh,bh,Count(*) as Cnt into #temp from TableName
Group By xh,bh
从表中检索出每一组xh,bh以及所对应的记录数目,放到临时表#temp中

select * from #temp where cnt>1
从临时表中检索出对应数目大于1的数据,就是你想要得到的xh及bh
 
同意楼上WIND_CLOUDY的通过sql语句的group by 直接就行
 
invalid use keyword
token: into
运行后出现错误为什么?
 
呵呵,我那个是Sql Server中专用的,你可以参见wind_cloudy大虾的贴子
Select xh,bh,Count(*) as Cnt from TableName
Group By xh,bh
having count(*)>1
 
语法错误。你用的是什么数据库?你的数据库可能不支持VeryCoolBoy的写法.
你用我的方法试一试.
 
tahnk you!!
 
后退
顶部