En realidad
si
Si no tenes problemas deberias dejar todo como esta.
Si siempre van a ser pocos registros no vas a tener problema con el locate.
Si son muchos registros la pregunta es, porque estas lanzando un locate sobre un Dataset con tantos registros? Lo mas logico es directamente traer un Dataset mas "filtrado" (tip: ejecutar SQL y traer el resultado sobre un TDataset es MUCHO mas rapido que traer todo y luego ejectar "el equivalente", ya sea locate, filter, order, etc)
Otro buen truco es, siempre que se va a realizar un proceso potencialmente largo sobre un Dataset, que esta enlazado a un control db, deshabilitar el enlace momentaneamente y volver a activarlo cuando termina el proceso
masomenos asi:
Código Delphi
[-]
Dataset.DisableControls; try
while not Dataset.Eof do
begin
Foo(Dataset);
Dataset.Next;
end;
finally
Dataset.EnableControls;
end;