Идеята е да се спести ресурс като се направи един INSERT с доста стойности в место нормалния метод с INSERT за всяка стойност. Тук обаче има подробност, че при INSERT на5 стойности(на пример) и едната е дублирана излиза грешка което пречи на останалите 4 да бъдат записани.
Решенията които се сещам са следните:
1. Проверява се които са налични и така се прави INSERT само на новите
2. Прави се insert но със INSERT IGNORE.
Пример за решение 2:
Без употреба на INSERT IGNORE:
mysql> insert into tags_basic (date_add,time_add,tag) VALUES ('2010-09-27','16:09:43','tag1'),('2010-09-27','16:09:43','tag2'),('2010-09-27','16:09:43','tag3'),('2010-09-27','16:09:43','tag5');
ERROR 1062 (23000): Duplicate entry 'tag1' for key 2С употреба на INSERT IGNORE:
mysql> insert ignore into mtable (date_add,time_add,tag) VALUES ('2010-09-27','16:09:43','tag1'),('2010-09-27','16:09:43','tag2'),('2010-09-27','16:09:43','tag3'),('2010-09-27','16:09:43','tag5');
Query OK, 1 row affected (0.01 sec)
Records: 4 Duplicates: 3 Warnings: 0
На мен лично ми допада метод 2 понеже не се изискват допълнителни select заявки и калкулации в php/perl или каквото е там.
MySQL- Спиране на duplicate key erros при insert на доста стойности,