buenos dias gente

: tengo una duda y es la siguiente

sucede que tengo que optimizar la velocidad de procesamiento de un sistema y al ver el codigo me di cuenta que inserta registro en una base de datos firebird desde la interfaz delphi de la siguiente manera:
(en pseudo delphi

)
contador: integer;
begin
contador:=0;
while contador=numero_de_registros
begin
//hace un select de una tabla primero y como
//esta en un sqlquery lo ejecuta de la siguiente mnera
data.Params[0].AsTime:=var1.date;
data.Close();
data.Open();
//el resultado se almacena en un dataset
if va1=dataset.fields[0].asdate then
begin
//
no hace nada
end
else
begin//inserta si la comparacion es falsasqlquery.sql.add('insert into table(val1,val2) values'+ var1+','+ var2);
sqlquery.execsql();
contador++;
end;
end;
si inserta 1 o 10 o hasta 25 registro la velocidad es aceptable
pero al insertar 100 o 300 registro me tarda como 2 minutos..
mi pregunta es si al realizar una especie de procedimiento almacenado no se optimizaria un poco mas
?
Desde paraguay les mando un gran abrazo y muchas gracias por su ayuda