Optimizing my update sequence

WePython 1 Months+

Whenever a user updates his profile, we conduct a set of queries like so:

DELETE FROM `user_likes` WHERE `ID` = $id
INSERT INTO `user_likes` VALUES (DEFAULT, $id, $interest_id, $interest_name)

Is there a way to do this all in one step? There has to be a way, because the interest IDs are all different for each user. Keep in mind that the data never actually has to be deleted - it's a set that is always growing.


Create a unique pair index for your user_id and interest_id in the user_likes table.

Then use:

INSERT IGNORE VALUES (DEFAULT, $id, $interest_id, $interest_name), ...

to insert the values, having the database check for previous existence of the pair.


If you just updating the interest id and name, use UPDATE

UPDATE user_likes SET
`interest_id` = $interest_id,
`interest_name` = '$interest_name'
WHERE `ID` = $id;

If you want to mechanically do a DELETE followed by an UPDATE, use REPLACE

REPLACE INTO `user_likes` VALUES (DEFAULT, $id, $interest_id, $interest_name);

Please test these out on a Dev DB Server to make sure this is what you want

Previous : Build a three table join with a recusive table in the middle?
Next : Difference between count(*) and count(1) in mysql?