이제 두 개의 테이블(mysql)이 있습니다.
테이블 1의 필드는 다음과 같습니다: 시/도, 휴대폰 번호, 이름, 기타 필드
테이블 2의 필드는 다음과 같습니다: 도, 시 , 휴대폰번호, 기타 항목
표 1과 표 2의 데이터베이스는 모두 규모가 크며 매일 수백만 행의 새로운 데이터가 추가됩니다.
이제 표 1과 표 2가 모두 표로 나누어졌습니다.
요구 사항은 두 테이블의 휴대폰 번호를 기준으로 두 테이블의 데이터를 일치시키는 것입니다.
질문은
1. 일치하는 데이터를 어떻게 저장합니까? 세 번째 테이블에 저장됩니까, 아니면 테이블 2에 일치하는 행의 ID를 유지하기 위해 테이블 1에 필드를 추가합니까?
2. 일치하지 않는 레코드를 쿼리하는 방법.
이제 두 개의 테이블(mysql)이 있습니다.
테이블 1의 필드는 다음과 같습니다: 시/도, 휴대폰 번호, 이름, 기타 필드
테이블 2의 필드는 다음과 같습니다: 도, 시 , 휴대폰번호, 기타 항목
표 1과 표 2의 데이터베이스는 모두 규모가 크며 매일 수백만 행의 새로운 데이터가 추가됩니다.
이제 표 1과 표 2가 모두 표로 나누어졌습니다.
요구 사항은 두 테이블의 휴대폰 번호를 기준으로 두 테이블의 데이터를 일치시키는 것입니다.
질문은
1. 일치하는 데이터를 어떻게 저장합니까? 세 번째 테이블에 저장됩니까, 아니면 테이블 2에 일치하는 행의 ID를 유지하기 위해 테이블 1에 필드를 추가합니까?
2. 일치하지 않는 레코드를 쿼리하는 방법.
create table zzz( id int not null, xx ..., primary key(id) ) as ( select id, xx from table where .. )
http://dev.mysql.com/doc/refm...
일치하지 않는 레코드의 경우 한 테이블을 왼쪽 테이블로 사용하여 다른 테이블과 연결하고 오른쪽 테이블에 Null이 있는지 확인합니다.
예:
select * from tb1 left join tb2 on tb1.mobi=tb2.mobi where tb2.mobi is null
결과는 tb2에는 나타나지 않는 tb1의 모든 기록입니다
하지만 tb1에 존재하지 않는 레코드가 tb2에 있는 경우에는 tb1의 일치하지 않는 레코드를 찾을 수 없습니다.
실제로 두 테이블이 모두 일치하는지 확인하려면 다음을 사용하세요. full join
일치시키려면, 보유하고 있는 데이터의 양으로 판단하여 Full Join을 사용하지 않는 것이 좋으며, 사용하더라도 모두 체크하지 않는 것이 좋습니다.
Join 사용 방법은 이 사진을 참고하세요
테이블 최적화
1. 휴대폰 번호 필드 인덱스
2. 휴대폰 번호 앞 몇 자리에 따라 테이블을 나누는 것이 좋습니다.
저장소에 대하여
다른 테이블에 행을 저장하려면 표 1과 표 2에 필드를 추가하는 것이 좋습니다. 다음 업데이트 프로세스에서 값이 있는 필드 처리를 건너뛸 수 있습니다.
일치하지 않는 필드는 비어 있습니다.
또한
표 1에 데이터를 추가할 때 업데이트 내용을 직접 기록에 넣어서 표 2에 존재하는지 확인하는 것이 좋습니다.
t1.mobile = t2.mobile인 t1,t2에서 *를 선택하여 쿼리할 수 있습니다.
쿼리한 후 새 쿼리를 생성할 수 있습니다