MySQL logo

Есть отличный проект Nakama https://heroiclabs.com но я продолжаю использовать свою реализацию Leaderboards и Profile Storage.

Вчера сделал небольшую оптимизацию SQL-запроса (да, я тот еще SQL-разработчик). Вместо нескольких запросов сделал один, который объединил в себе вставку, обновление и условие обновления.

'INSERT INTO `some_table`' +
   ' (`user_id`, `timestamp`, `user_name`, `score`)' +
   ' VALUES(?, NOW(), ?, ?)' +
   ' ON DUPLICATE KEY UPDATE' +
   ' `timestamp`=NOW(), `user_name`=?,' +
   ' `score`=GREATEST(`score`, VALUES(`score`))';

Для работы этого запроса поле user_id должно быть UNIQUE.