Каков наилучший способ сделать вставку / обновление в MySQL в одном запросе? - PullRequest
0 голосов
/ 18 февраля 2011

Я ищу для оптимизации одного запроса к моему серверу (который будет использоваться десятками или сотнями внешних серверов), который позволит удаленно вставлять статистику игроков (майнкрафт) и читать без проблем.

В настоящее время я использую: INSERT DELAYED INTO servers_players (a,b,c) VALUES(1,2,3) ON DUPLICATE KEY UPDATE c=c+3, ...;

Это был бы лучший способ оптимизировать запрос или есть лучший способ?

Спасибо,

1010 * Билли *

1 Ответ

2 голосов
/ 18 февраля 2011

Обратите внимание, что DELAYED не будет работать, согласно http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html:

Параметр DELAYED игнорируется при использовании ON DUPLICATE KEY UPDATE.

Что касается оптимизации, то она уже довольно оптимальна по сравнению с отдельной комбинацией INSERT / UPDATE в целом.Тем не менее, точные шаблоны использования могут повлиять на него (например, если большинство ваших операций VAST будут UPDATE (очень мало вновь вставленных строк), сначала выполнить UPDATE, а затем вставить, если UPDATE обновляет нулевые строки, может быть более эффективным.

...