具体需求
数据库里存在100万条数据;
要导入10万条数据;
如果要导入的数据在数据表里存在,则终止数据导入;
疑问
如何在每条数据需要对比的情况下快速导入,同时导入失败进行数据回滚?
phpcn_u15822017-05-16 13:11:47
대상 테이블을 대상(100,000개 데이터)이라고 하고, 가져와야 하는 테이블을 소스(100,000개 데이터)라고 가정합니다.
이 예에서 소요되는 시간의 대부분은 두 테이블의 레코드가 동일한지 확인하는 것입니다. 작성자는 모든 필드가 동일하기를 원합니다(id 필드 제외). 같은 기록.
새로 생성된 대상 및 소스 필드(hashValue)에 저장할 수 있는 각 레코드에 대해 해시와 같은 값을 계산합니다.
그런 다음 다음 명령문을 사용하여 데이터를 가져옵니다
我想大声告诉你2017-05-16 13:11:47
거래 효율성을 고려한다면 높지 않아야 합니다
개인적인 생각은 다음을 참고해주세요
1. 먼저 삽입할 데이터가 존재하는지 확인하세요
id가 있는 테이블에서 ID를 선택하세요('k1,k2,k3');
2. 데이터베이스에 SQL을 작성합니다.
10w 데이터, 1 sql, 삽입 속도, 2초 안에 해결전에 제가 쓴 글을 읽어보실 수 있습니다. 20w 데이터를 한 번에 삽입하는 것을 최적화하여 3초 안에 완료됩니다
https://my.oschina.net/famous...
怪我咯2017-05-16 13:11:47
이 문제를 토대로 후속 가져오기 과정에서 큰 문제가 발생했고, 데이터 가져오기 속도도 느려져서 이에 대한 글을 작성하게 되었습니다.
/a/11...
누군가 나중에 보시고 참고용으로 활용하시면 좋겠습니다.