최근 mysql을 공부하면서 mysql 배치 삽입과 배치 업데이트의 효율성이 낮다는 문제에 부딪혔습니다. 이전에 sqlserver를 사용해 본 적이 있는데, mysql 자체의 효율성은 꽤 좋은 편입니다. 여기서는 효율성 향상 방법을 기록하겠습니다. 시간을 비교하지 않고도 실제 테스트 결과의 효율성이 크게 향상되었습니다.
테이블 구조 생성
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;
쿼리 최적화, 시나리오 검사코드가 존재하는지 확인하는 것입니다
SELECT 1 FROM b_student WHERE examcode='10001' limit 1;
질의 결과가 1이면 존재하고, 결과가 null이면 존재하지 않는다는 뜻입니다
일괄 삽입 최적화 , 학생 정보 시나리오 일괄 삽입
INSERT INTO `b_student` (`examcode`,`stucode`,`name`) VALUES('10001','10001','张三'),('10002','10002','李四');
일괄 업데이트 최적화, 시나리오 일괄 업데이트 학생 정보
여기서 일괄 삽입은 두 가지 방법(테이블에 기본 키가 있어야 함)을 소개하며 그 외의 방법도 있습니다.
1. 대체 방법은 기본 키를 기반으로 특정 열을 업데이트합니다. 참고: 이 방법은 ID와 이름을 제외한 열을 지웁니다.
replace into b_student (id,name) values (1,'张三丰'),(2,'李思思');
2. 중복 키 업데이트 방법에 삽입, 기본 키에 따라 업데이트 후 정의된 열 업데이트
insert into b_student (id,stucode) values (1,'20001'),(2,'20002') on duplicate key update stucode=values(stucode);
위의 두 가지 방법은 일괄 업데이트에 매우 효율적입니다.
위 내용은 MySQL 쿼리, 일괄 삽입, 일괄 업데이트 및 최적화에 대한 자세한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!