Das Problem ist hier tatsächlich, dass du in der Abfrage 2 Tabellen aus unterschiedlichen Quellen abfragst.
Access löst das Problem so, dass zuerst die Daten aus Tabelle A (AS/400) komplett geladen und anschließend mit Tabelle B (Access) verglichen wird.
Was nicht benötigt wird, wird dann wieder verworfen.
Dies erklärt halt auch die lange Laufzeit. Wobei 1 Minute bei wenigen 100 Sätzen ja noch geht.
Stelle dir vor, du hättest eine Tabelle mit 20Mio Sätzen abgefragt.
Access hätte erst mal 16Mio geladen, dann die 16 Mio entladen und anschließend einen Überlauffehler gemeldet;-).

Wahrscheinlich wird es einfacher sein, per VBA die Tabelle B zu lesen und für jeden einzelnen Kunden die Abfrage aus Tabelle A aufzurufen.

Alternativ lege für Tabelle B eine Tabelle auf der AS/400 an und mach nur eine verknüpfte Tabelle zur Tabelle B. Nun liegen beide Tabellen auf der AS/400 und Access löst die Abfrage tatsächlich mit einem Join auf.