Du könntest die entsprechenden Datensätze von vornherein ausschließen:
AND NOT EXISTS(select * from Tabelle_A aa WHERE aa.spalte1 = b.spalte1 and aa.spalte2 == b.spalte2)
Jein. Er muss ZUNÄCHST EINMAL entscheiden, ob er die Datensätze mit bereits vorhandenen IDs übergeht (das genau ist Dein Vorschlag) oder ob im Falle doppelt vorhandener Keys ein Update machen will:
INSERT ... ON DUPLICATE KEY UPDATE