Hallo Knud
Meine erste Idee war, wie ich es schonmal in dBase/Foxpro realisiert habe, einen kombinierten Index
auf Postleitzahl und den ersten 5 Buchstaben der Strasse zu legen.
geht das überhaupt mir SQL, kombinierte Indexe?
In der Regel ja, das Anlegen des Indexes hängt jedoch vom verwendeten SQL-Server ab.
Bei MS-SQL sieht dies z.B. so aus:
CREATE UNIQUE
INDEX [idx_test] ON [dbo].[tblHaendler] ([lngHaendlernummer], [strStrasse], [strPLZ])
Funktionen in der Indexdefinition (z.B.convert() oder case() zum ermitteln der ersten 5 Zeichen eines Feldes) sind, zumindest bei MS-SQL, nicht erlaubt.
Natürlich könnte man jedoch in der Tabelle ein Feld einbauen, dass nur die ersten 5 Buchstaben des Feldes enthält, bzw. direkt einen "eindeutigen" Matchcode aus einer beliebiegen Feld- und Funktionskombination enthält.
Dieses Feld "Matchcode" müsste über Triggers bei jedem Update/Insert, der in die Matchcodebildung einbezogenen Felder, erzeugt werden.
Anschliessend setzt Du den Index nur noch auf dieses Feld.
Ich hoffe, dass ich Dir damit einen Lösungsansatz vermitteln konnte.
Grüsse
Tom