El problema de la propiedad filter, es que trae todos los registros de la tabla y después, en el ordenador cliente, es donde aplica el filtro.
No sé qué componentes de acceso estas utilizando, pero desde luego un
TTable no se debe usar.
El componente que se usa, encapsula 4 consultas SQL:
- SelectSql
Código SQL
[-]
select lo que sea from tabla where clavePrimaria = :Clave
"Clave" es un parámetro que en tiempo de ejecución le pasas el valor.
- InsertSQL
Código SQL
[-]
insert into tabla(campo1, campo2) values (:campo1, :campo2)
- DeleteSql
Código SQL
[-]
delete from table where ClavePrimria = :Clave
- UpdateSql
Código SQL
[-]
Update tabla1 set
campo1 = :campo1,
campo2 = :campo2)
where ClavePrimaria = :old_Clave
Estos componentes suelen llamarse:
- TIBDataset (si usas los IBX)
- TMDODataset (si usas MDOLIB)
- etc.
(lo escribo de memoria y seguro que puede variar).
Como ves, en la cláusula where se indica la clave primaria, por tanto
solo traerá un registro, y puesto que es clave primaria, estará indexado, y el acceso a él será inmediato.
De cualquier otra forma que ataques una base de datos de esas características, tendrás problemas de rendimiento.
Por supuesto sin contar que deben crearse claves primarias, índices por los campos de búsqueda muy común, Uso de Triggers / vistas / StoreProcedures / etc cuando sea necesario.
Saludos