Ich gehe mal davon aus, dass das Füllen der Tabellen nicht im Mehrbenutzerbetrieb stattfindet. Unter dieser Randbedingung würde ich die drei Lookup-Tabellen in jeweils einer sortierten StringList komplett zwischenspeichern.
Delphi-Quellcode:
var
slPlz: TStringList;
begin
slPlz := TStringList.Create;
with slPlz do
begin
Sorted := true;
Duplicates := dupIgnore;
end;
slPlz.Values['74072'] := '1';
slPlz.Values['60325'] := '2';
ShowMessage(slPlz.Values['74072']);
end;
marabu