Sep 042012
 

DB에서 가능하면 join을 사용하지 않도록 설계를 하면 성능에 많은 도움이 된다.

하지만 어쩔수 없는 경우에는 outer join을 사용하면 빠른 속도로 join이 가능하다.

그래서 left outer join을 자주 사용하게 되는데. 이런 경우 join이 되는 테이블의 데이타가 없는 경우에도 결과값은 생성이 되게 된다.

이런 경우에 join이 되는 테이블의 데이타가 없는 경우에는 아래와 같이 판별이 가능한다.
(MySQL 메뉴얼에서 참고한 내용)

If there is a row in A that matches the WHERE clause, but there is no row in B that matches the ON condition, an extra B row is generated with all columns set to NULL.

실제로 2개의 테이블이 느슨한 연결 상태라서 foreign key가 없는 row가 존재할 수 있다.
아래와 같은 쿼리를 통해서 확인하고, delete 처리가 가능하다.

SELECT *
FROM tb_abc a
LEFT JOIN tb_123 b ON a.title = b.title
WHERE a.TYPE = 'ok'
AND b.STATUS IS NULL

참고 URL : http://dev.mysql.com/doc/refman/5.5/en/left-join-optimization.html

Plugin from the creators of Brindes :: More at Plulz Wordpress Plugins