Делать большое количество upsts как можно быстрее - PullRequest
0 голосов
/ 15 января 2011

Мое приложение (которое использует MySQL) выполняет большое количество последующих загрузок.Прямо сейчас мой SQL выглядит следующим образом:

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 - самый быстрый способ добиться аппетита.Выбор записи, чтобы увидеть, существует ли она, а затем либо обновление, либо вставка новой, выполняется слишком медленно.Даже это не так быстро, как хотелось бы, потому что мне нужно сделать отдельное утверждение для каждой записи.Иногда у меня будет около 50 000 таких утверждений подряд.

Есть ли способ позаботиться обо всем этом в одном утверждении, не удаляя существующие записи?

1 Ответ

0 голосов
/ 15 января 2011

Вы можете поместить все в 1 вкладыш INSERT IGNORE INTO table_1 (field1, field2) VALUES ('val1', 'val2'), ('val3', 'val4'), etc.Вы также можете проверить INSERT ... ON DUPLICATE KEY UPDATE, если вам нужно обновить или вставить запись.

...