>  Q&A  >  본문

php - 导入10万条数据,数据库里有100万条数据,如何判断重复?

具体需求

  1. 数据库里存在100万条数据;

  2. 要导入10万条数据;

  3. 如果要导入的数据在数据表里存在,则终止数据导入;

疑问

如何在每条数据需要对比的情况下快速导入,同时导入失败进行数据回滚?

PHP中文网PHP中文网2734일 전766

모든 응답(4)나는 대답할 것이다

  • phpcn_u1582

    phpcn_u15822017-05-16 13:11:47

    대상 테이블을 대상(100,000개 데이터)이라고 하고, 가져와야 하는 테이블을 소스(100,000개 데이터)라고 가정합니다.
    이 예에서 소요되는 시간의 대부분은 두 테이블의 레코드가 동일한지 확인하는 것입니다. 작성자는 모든 필드가 동일하기를 원합니다(id 필드 제외). 같은 기록.

    새로 생성된 대상 및 소스 필드(hashValue)에 저장할 수 있는 각 레코드에 대해 해시와 같은 값을 계산합니다.
    그런 다음 다음 명령문을 사용하여 데이터를 가져옵니다

    으아악

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你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...

    회신하다
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:11:47

    제 개인적인 생각은, 가져올 때 무게를 판단하고 고유한 색인을 설정하여 고유성을 보장하는 것이 핵심입니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-16 13:11:47

    이 문제를 토대로 후속 가져오기 과정에서 큰 문제가 발생했고, 데이터 가져오기 속도도 느려져서 이에 대한 글을 작성하게 되었습니다.

    /a/11...

    누군가 나중에 보시고 참고용으로 활용하시면 좋겠습니다.

    회신하다
    0
  • 취소회신하다