Do I use INSERT w/ ON DUPLICATE KEY or INSERT/UPDATE separately? Is it better to use

$Query = "INSERT INTO table (col1, col2) VALUES (:col1, :col2)
ON DUPLICATE KEY UPDATE col1 = VALUES(:col1), col2 = VALUES (:col2);"
    . . . .
$stmt-&gt;execute();


for a Submit and Update Buttons

Or is it better to use different INSERT/UPDATE Query for each button?

##SUBMIT_BUTTON
$Query = "INSERT INTO table (col1, col2) VALUES (:col1, :col2);"
    . . . .
$stmt-&gt;execute();

##UPDATE_BUTTON
$Query = "UPDATE table SET col1 = :col1, col2 = :col2;"
    . . . .
$stmt-&gt;execute();


Depending on Performance while having UNIQUE KEY on col1.

Simplified: Does

INSERT INTO . . . ON DUPLICATE KEY UPDATE . . .


Use an Extra step If I know that the INSERTed ROW is Duplicated, But instead of using the Traditional 

UPDATE . . . SET . . . WHERE . . .


I used the INSERT with ON DUPLICATE KEY UPDATE?

Is the Performance affected Even if I had the correct INDEXES?
Your question mixes two things.

On the one hand, you have two parts to the UI, wherein the user decides, perhaps incorrectly, whether the action is just an insert or just a delete.

On the the other hand, you could have a single button, thereby simplifying the UI, and the button does IODKU under the covers.

But...  Maybe you want the user to be reprimanded when he asks to INSERT something that is already in the table?  (Etc)

The real goal should be to make the UI simple, concise, obvious, etc, to the user.  The amount of work to achieve the requested task is so insignificant that you should not be considered in the equation.  It may take the user 10 seconds to read, then press, the appropriate button, but but only 10 milliseconds to perform the action.  That's 1000:1 !

Anyway, back to your question...  IODKU has to check all UNIQUE (including PRIMARY) keys mentioned, then decide to INSERT or what row(s) to UPDATE.  (Yes, multiple mentioned unique keys can lead to multiple rows updated.  By why mention more than one unique key?)

An INSERT or a UPDATE is inherently faster than IODKU.  But it is probably sub-millisecond.  On the other hand, it will take seconds to report an error to the user and wait for him to deal with it -- if he presses INSERT when he should press UPDATE.

So, I go back to the important principle -- design the UI right.