Мое приложение (которое использует MySQL) делает большое количество последующих upserts. Сейчас мой SQL выглядит следующим образом:Выполнение большого количества upserts как можно быстрее
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('VICTOR H KINDELL','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('VICTOR H KINDELL','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('VICTOR H KINDELL OR','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('TRACY L WALTER PERSONAL REP FOR','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('TRACY L WALTER PERSONAL REP FOR','123','123','123')
До сих пор я нашел INSERT IGNORE
быть самым быстрым способом достижения upserts. Выбор записи, чтобы увидеть, существует ли она, а затем либо обновить ее, либо вставить новую, слишком медленно. Даже это не так быстро, как хотелось бы, потому что мне нужно сделать отдельный оператор для каждой записи. Иногда у меня будет около 50 000 этих утверждений подряд.
Есть ли способ позаботиться обо всех этих случаях только в одном заявлении, не удаляя существующие записи?
Если я использую 'INSERT IGNORE' так, не будет ли он игнорировать весь запрос, если бы существовала только одна из записей? К сожалению, я не могу использовать 'ON DUPLICATE KEY UPDATE' по причинам, требующим длительного объяснения. –
'Если вы используете ключевое слово IGNORE, ошибки, возникающие при выполнении инструкции INSERT, рассматриваются как предупреждения. Например, без IGNORE строка, которая дублирует существующий индекс UNIQUE или PRIMARY KEY в таблице, вызывает ошибку с дубликат-ключом, и оператор прерывается. С IGNORE строка все еще не вставлена, но не выдается ошибка. ' – dkarp
' REPLACE INTO' также является опцией, но поскольку он удаляет и заменяет существующие строки, он, вероятно, будет менее эффективным, чем 'INSERT IGNORE'. – dkarp