이 작업을 수행하는 적절한 방법이 확실하지 않습니다. 나는 기본적으로 2 개의 테이블을 가지고있다. 두 표 모두 동일한 구조를가집니다. Database1 (현재 데이터 평균 20k 행), Database2 (데이터 누적은 한 번에 1mil 행을 넘을 수 있음)mySQL - 테이블 행 비교
두 테이블을 비교하고 특정 timestamp 쿼리를 사용하여 Database2에 존재하지 않는 Database1의 결과를 얻고 싶습니다. 내가 가지고 있고 아직 시도한 쿼리는 검색하는 데 너무 오래 걸립니다.
는 시도 : 난 아직도 내 머리는이 감싸 얻을 수 없습니다
select distinct player from Database1
where not exists (select player from Database2 where snap = 1340981695)
SELECT Database1.player FROM Database1
INNER JOIN Database2 ON Database1.player NOT IN (Database2.player) AND Database2.snap = 1340981695
GROUP BY Database1.player
select distinct Database1.player from Database1
left join Database2 on Database1.player not in (Database2.player)
and Database2.snap = 1340981695
. 도움을 주셔서 감사합니다.
표 구조 및 색인을 표시하십시오 – Cfreak
두 테이블 모두 id, player, castle, xaxis, yaxis, snap 및 id가 기본 키입니다. 새로운 데이터가 생성되어 Database1에 저장 될 때 항상 동일한 데이터는 없으며 항상 변경됩니다 (Database1에서 복사되고 Database2로 복사되고 항상 누적됩니다). – sgkdnay
인덱스를 배치하는 것이 실제로는 없습니다. 'player'와'snap'에'id'가 합치는 것 같이 도움이 될 것입니다 (테이블에서 일치한다고 가정 할 때). 모든 데이터 플랫 파일을 덤프하고 차이점을 찾기 위해 그것을 분석하는 프로그램을 작성하는 것이 좋습니다. grep은 아마도 이것을 매우 빠르게 수행 할 것입니다.) 일단 그렇게하면 데이터베이스 설계를 재고해야합니다 .MySQL은 1M + 행 테이블에서 정상적으로 작동합니다. 왜 2? – Cfreak