Maison > Article > base de données > Introduction aux détails de l'optimisation de la mise à jour par lots d'insertion par lots de requête MySQL
Lorsque j'étudiais MySQL récemment, j'ai rencontré le problème de la faible efficacité de l'insertion par lots et de la mise à jour par lots de MySQL. J'ai déjà utilisé sqlserver, et l'efficacité de MySQL lui-même est assez bonne. Ici, j'enregistrerai l'amélioration de l'efficacité. méthodes sans comparer le temps, les résultats réels des tests sont beaucoup plus efficaces.
Créer une structure de table
1 DROP TABLE IF EXISTS `b_student`; 2 CREATE TABLE `b_student` ( 3 `id` int(11) NOT NULL AUTO_INCREMENT, 4 `examcode` varchar(20) CHARACTER SET gbk NOT NULL DEFAULT '', 5 `stucode` varchar(20) CHARACTER SET gbk NOT NULL DEFAULT '', 6 `name` varchar(20) CHARACTER SET gbk NOT NULL DEFAULT '', 7 PRIMARY KEY (`id`) 8 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Optimisation des requêtes , le scénario consiste à déterminer si le code d'examen existe
SELECT 1 FROM b_student WHERE examcode='10001' limit 1;
Le résultat de la requête 1 signifie qu'il existe, et le résultat null signifie qu'il n'existe pas
Optimisation de l'insertion par lots, scénario d'insertion par lots des informations sur les élèves
INSERT INTO `b_student` (`examcode`,`stucode`,`name`) VALUES('10001','10001','张三'),('10002','10002','李四');
Optimisation de la mise à jour par lots, Scénario de mise à jour par lots des informations sur les étudiants
L'insertion par lots introduit ici deux méthodes (nécessitant que la table ait une clé primaire), et il existe d'autres méthodes.
1. La méthode replace into met à jour une ou plusieurs colonnes en fonction de la clé primaire. Remarque : Cette méthode effacera les colonnes sauf l'identifiant et le nom.
replace into b_student (id,name) values (1,'张三丰'),(2,'李思思');
2. insérer dans ... lors de la méthode de mise à jour de clé en double, mettre à jour les colonnes définies après la mise à jour en fonction de la clé primaire
insert into b_student (id,stucode) values (1,'20001'),(2,'20002') on duplicate key update stucode=values(stucode);
Les deux méthodes ci-dessus sont très efficaces dans les mises à jour par lots. Choisissez en fonction de la situation réelle.
Ce qui précède est l'introduction détaillée de la requête MySQL, de l'insertion par lots, de la mise à jour par lots et de l'optimisation. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !