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