Domanda

La mia app (che utilizza MySQL) sta facendo un gran numero di upserts successive. In questo momento il mio aspetto SQL come questo:

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')

Finora ho trovato INSERT IGNORE per essere il modo più veloce per raggiungere upserts. Selezione di un record per vedere se esiste e poi o l'aggiornamento o l'inserimento di uno nuovo è troppo lento. Anche questo non è così veloce come vorrei, perché ho bisogno di fare una dichiarazione separata per ogni record. A volte avrò circa 50.000 di queste affermazioni di fila.

C'è un modo per prendersi cura di tutti questi in una sola istruzione, senza eliminare tutti i record esistenti?

È stato utile?

Soluzione

Si può mettere tutto in 1 inserto INSERT IGNORE INTO table_1 (field1, field2) VALUES ('val1', 'val2'), ('val3', 'val4'), etc. Si consiglia inoltre di controllare INSERT ... ON DUPLICATE KEY UPDATE se è necessario o di aggiornamento o di inserire un record.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top