Update existing doesn't use match fields, it will complete overwrite your found set with the records in the import file.
Update matching, uses match fields, and will only update records and fields if a match is found in the current found set. Not having a proper found set has bitten me a few times. The other issue, is if your match field is not set to be unique, and records in the found set that are remaining, after the matching, will be added, without regard for duplicates.
How do you use a matching field to say: "only add records where no match exists" so if I have three records (1,2,3) and I import from an Oracle database with four records (1,2,3,4) it will only import record number 4?