Los filtros se aplican del lado del cliente, así que siempre consumirá mas recursos que una consulta al servidor.
Es más fácil y rápido hacer una consulta al servidor, pero no en el evento OnChange, sino cuando el usuario pulse la tecla Enter en el Edit (que no cuesta tanto
).
Es muy bonito cuando vas pulsando teclas y ves como cambian los datos, pero tecleando rápido.... da igual que sea un AMD 3500 Mhz, con 5000 registros se vé lo lento que es el sistema, por el filtro, y por la "comodidad" de ver los datos cambiar.
Yo veo más eficiente y rápido que el usuario escriba con libertad y al pulsar intro, se lance la consulta, haga un inner join de las tablas y se aplique las restricciones con un "WHERE".
Código SQL
[-]
select c.*, s.*
from clientes c inner join servicios s on c.codcliente = s.idcliente
where c.nombreCliente like : prNombre
Código Delphi
[-]
query1.parambyname('prNombre':= '%'+ edCli.Text + '%';
query1.open;
Saludos