我给个主意吧,先将内存中的10000条ID进行排序。然后按顺序找到有规率的生成删除语句。var I : Integer; StartID, StopID : Integer; IDS : array of integer;begin //排序部分你自己搞掂呀。 StartID := IDS[0]; for I:=1 to High(IDS) do if IDS - IDS[i-1] > 1 then begin StopID := IDS[i-1]; Query.SQL.Text:= format('delete from tablename where id between %d and %d', [StartID, StopID] ); Query.ExecSQL; StartID := IDS; end;end;