INSERT IGNORE "vs" INSERT ... ON DUPLICATE KEY UPDATE
Если вы хотите увидеть, что mysql-if все это означает, вот краткое inserts описание всего:
CREATE TABLE `users_partners` (
`uid` int(11) NOT NULL DEFAULT '0',
`pid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`,`pid`),
KEY `partner_user` (`pid`,`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Первичный inserts ключ основан на обоих столбцах inserts этой справочной таблицы. Первичный mysql-if ключ требует уникальных значений.
Начнем:
INSERT INTO users_partners (uid,pid) VALUES (1,1);
...1 row(s) affected
INSERT INTO users_partners (uid,pid) VALUES (1,1);
...Error Code : 1062
...Duplicate entry '1-1' for key 'PRIMARY'
INSERT IGNORE INTO users_partners (uid,pid) VALUES (1,1);
...0 row(s) affected
INSERT INTO users_partners (uid,pid) VALUES (1,1) ON DUPLICATE KEY UPDATE uid=uid
...0 row(s) affected
обратите mysql-if внимание, что приведенное mysql-query выше сэкономило слишком много mysql-server дополнительной работы, установив mysql-table столбец, равный самому себе, на mysqldump самом деле обновление не mysqlsh требуется
REPLACE INTO users_partners (uid,pid) VALUES (1,1)
...2 row(s) affected
а теперь несколько my-sql многострочных тестов:
INSERT INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4)
...Error Code : 1062
...Duplicate entry '1-1' for key 'PRIMARY'
INSERT IGNORE INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4)
...3 row(s) affected
Никаких my-sql других сообщений в консоли mysql-table не генерировалось, и теперь mysql-query у нее есть эти 4 значения mysql-query в данных таблицы. Я удалил mysql-query все, кроме (1,1), чтобы я mysqlsh мог тестировать с того же mysqldump игрового поля
INSERT INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4) ON DUPLICATE KEY UPDATE uid=uid
...3 row(s) affected
REPLACE INTO users_partners (uid,pid) VALUES (1,1),(1,2),(1,3),(1,4)
...5 row(s) affected
Вот и все. Поскольку mysql-server все это было выполнено на mysqlsh новой таблице почти без данных mysql-if и не в рабочей среде, время mysql-table выполнения было микроскопическим mysql-if и несущественным. Любой, у my-sql кого есть реальные данные, будет mysqld более чем рад внести свой mysqldump вклад.
mysql
insert
INSERT IGNORE "vs" INSERT ... ON DUPLICATE KEY UPDATE
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.