데이터베이스에서 Join을 수행할 때, 옵티마이저에 의해 Nested Loop Join과 Hash Join이 주로 사용된다
CREATE INDEX idx_column1 ON my_table(column1);와 같이 설정하면, column1에 대한 Index가 B-Tree 구조로 생성되어, 해당 컬럼을 사용하는 쿼리에서 빠르게 검색이 가능해짐CREATE INDEX idx_composite ON my_table(column1, column2, column3);와 같이 설정하면, column1, column2, column3이 결합된 Index가 생성됨. 이 Index는 먼저 column1, 그 다음 column2, 마지막으로 column3의 값을 기준으로 정렬된 형태로 유지되며, 선두 컬럼부터 시작하는 조건을 사용할 때 효과적임Nested Loop Join으로 변경 가능Hash Join이 사용되는 쿼리들을 모니터링하고, Index를 추가함으로써 성능 향상 가능FULL OUTER JOIN은 두 테이블 간의 모든 행을 조인 결과에 포함시키며, 조인 조건을 만족하지 않는 경우에도 행을 유지하고, 해당하는 다른 테이블의 값은 NULL로 표시함
데이터 일치성 검토:
customers와 orders 테이블이 있다고 가정customers 테이블에는 고객 정보가, orders 테이블에는 주문 정보가 포함됨SELECT c.customer_id, c.customer_name, o.order_id
FROM customers c
FULL OUTER JOIN orders o ON c.customer_id = o.customer_id;
order_id가 NULL로 표시되고, 고객 정보가 없는 주문은 customer_id와 customer_name이 NULL로 표시됨데이터 비교:
CROSS JOIN은 두 테이블 간의 모든 가능한 행의 조합(카르테시안 곱)을 생성함. 모든 조합을 필요로 하는 시나리오에서 사용됨
모든 조합 계산:
SELECT p.product_name, c.customer_name
FROM products p
CROSS JOIN customers c;
날짜와 항목의 조합:
SELECT d.date, p.product_name
FROM dates d
CROSS JOIN products p;