Zu letzter Frage:
Ja, da der "In" alle Daten durchsuchen muss, da auch der letzte Datensatz die Bedingung erfüllen könnte.
Vor allem dann, wenn er nicht zusätzlich durch einen indizierten Where eingeschränkt wird.
Gibt es aber einen Schlüssel für die Where-Klausel des "[not] exists" ist das genau 1 Zugriff.

Den exists gibts halt noch nicht so lange wie den in, so ca. erst 20 Jahre;-).

with a as (
select FF1, ff2, ff3,
min(fjj*10000+fmm*100+ftt) as mi
from datei1
where
(ff1, ff2, ff3) in(
select f1, f2, f3
from datei2
where hdkz
= 10 )
group by f1, f2, f3),

b as (select ff1, ff2, ff3,
min(fjj), min(fmm), min(ftt), min(fnr) as fnr
from datei1 where
(ff1, ff2, ff3,
fjj*10000+fmm*100+ftt) in(
select ff1, ff2, ff3, mi from a)
group by ff1, ff2, ff3)
select * from b

Deine Einschränkungen der Where-Klauseln ändern daran nun auch nichts.