대용량 table 에서 차집합을 뽑아내고 싶어요. 1 2 825

by 수평선 [MySQL] 대용량 차집합 [2020.09.18 12:53:14]


db는 mysql 인데요..
table1 은 약 2천만건이 있고
table2 는 약 4천만건이 있어요.
table1 의 pk 는 unq_id 이고
table2 의 pk 는 unq_id,mdltyp 에요.
현재 table1에 unq_id 중 table2에는 없는게 있어요. 이걸 찾고싶어요.
이걸 찾아서 지워줘야 하는데요.. 쿼리를 2가지로 짰는데 너무 오래걸려서요.
테이블의 데이타수를 줄이면 잘 되긴해요..
대용량테이블에서 값을 빠르게 뽑아내는 방법이 있을까요?
방식1)
    SELECT
        unq_id 
    FROM
        (SELECT
            a.UNQ_ID
            ,COUNT(b.UNQ_ID) cnt 
        from
            table1 a 
        LEFT OUTER JOIN
            table2 b 
                ON a.UNQ_ID=b.UNQ_ID 
        GROUP BY
            a.UNQ_ID) c 
    WHERE
        c.cnt=0  

방식2)
    SELECT
        a.UNQ_ID 
    from
        table1 a 
    LEFT OUTER JOIN
        (
            select
                distinct unq_id 
            from
                table2
        ) b 
            ON a.UNQ_ID=b.UNQ_ID 
    WHERE
        b.UNQ_ID IS NULL 

by 마농 [2020.09.18 13:21:34]
SELECT a.unq_id
  FROM table1 a
  LEFT OUTER JOIN table2 b
    ON a.unq_id = b.unq_id
 WHERE b.unq_id IS NULL
;

 


by 수평선 [2020.09.18 13:44:29]

아..table2 에 따로 distinct 안해도 되는거네요..감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입