>  기사  >  백엔드 개발  >  데이터베이스 필드 일치 문제

데이터베이스 필드 일치 문제

WBOY
WBOY원래의
2016-12-01 01:27:421542검색

이제 두 개의 테이블(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에서 *를 선택하여 쿼리할 수 있습니다.
쿼리한 후 새 쿼리를 생성할 수 있습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.