검색결과 리스트
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1 . JOIN Method
▷ 조인의 종류 (수행 알고리즘에 따른 분류)
[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]
옵티마이저는 통계를 기반으로 로우의 크기가 작은 쪽을 후행테이블로 선택한다. 여기서 선행 테이블(Driving Table)은 Employee 테이블이다. 선행 테이블 Employee 를 기준으로 Nested Loop 해서 Jobs 테이블을 조인한다.
쿼리 분석기의 실행계획에서는 선행테이블의 선이 굵게 나타난다. Nested Loop 조인은 가장 기본적인 조인 전략으로 데이터 량이 적은 경우에는 이보다 확실한 방법이 없다.
2) Sort Merge JOIN (병합 조인)
한집합과 다른 집합을 합하기 위해서 양쪽 다 정렬이 되어 이썽야만 비교 가능하다. 그리고 Sort Merge의 경우 대등하게 합병되기 때문에 선행 또는 후행 테이블이 존재하지 않는다.
▷ 예제
[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]
3) Hash JOIN (해시 조인)
해시를 사용하는 경우는 해당 조인 키가 전혀 정렬되어 잇지 않고, 인덱스도 존재하지 않으면서 비교해야 할 대상은 많은 때이다.
▷ 예제
[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]
출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=Q0hy9Ukyo7F1lYXWdFWSq9Vt+PUzeDa9&qb=wd/DuLfnx8HBtsDO&pid=ff9h6loi5UCssc3Oi2hsss--004245&sid=SS9Xc5EmL0kAACI-ck0
▷ 조인의 종류 (수행 알고리즘에 따른 분류)
◎ Nested-Loop JOIN (중첩 루프 조인) ◎ Sort Merge JOIN (병합조인) ◎ Hash JOIN (해시 조인) ◎ Remote JOIN (리모트 조인) |
로우가 많아 질수록 쿼리의 코스트(Cost)는 높아진다. 당연히 처리할 데이터가 많기 때문이다.
이렇게 모두 비례적으로 성능의 떨어지지만 떨어지는 정도에는 차이가 있다.
우선Loop가 가장 기본적인 방법이며, 양이 적을 때에는 성능이 좋지만 데이터가 많아질 수록 비용도 급격히 증가한다.
Merge 방식은 데이터가 적을 경우에는Loop 보다는 못하지만, 양이 많아 질 수록 더 뛰어난 성능을 보인다. (여러 조건들이 있음)
Hash 방식은 데이터가 얼마 없을 경우에는 그 오버헤드(Overhead)로 인하여 성능이 좋지 않지만, 데이터가 많을수록Loop 보다는 낮고Merge 보다는 못하게 비용이 증가한다.
1) Nested-Loop JOIN (중첩루프조인)
한집합의원소값을다른집합의원소값과매칭해나가는방법
(가능한모든경우를조회하여결과집합을찾는방법)
성능을높이기위한방법
가) 후행테이블의크기가작을수록
나) 요소들의비교가빠르게이루어지도록인덱스가미리설정되어있어야한다.
* 선행테이블(Driving Table) : 찾는주체가되는테이블
* 후행테이블(Driven Table) : 비교대상이되는테이블
▷예제
--Nested-Loop Join SELECT * FROM pubs.dbo.employee e inner loop join pubs.dbo.jobs j on e.job_id = j.job_id |
[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]
옵티마이저는 통계를 기반으로 로우의 크기가 작은 쪽을 후행테이블로 선택한다. 여기서 선행 테이블(Driving Table)은 Employee 테이블이다. 선행 테이블 Employee 를 기준으로 Nested Loop 해서 Jobs 테이블을 조인한다.
쿼리 분석기의 실행계획에서는 선행테이블의 선이 굵게 나타난다. Nested Loop 조인은 가장 기본적인 조인 전략으로 데이터 량이 적은 경우에는 이보다 확실한 방법이 없다.
2) Sort Merge JOIN (병합 조인)
한집합과 다른 집합을 합하기 위해서 양쪽 다 정렬이 되어 이썽야만 비교 가능하다. 그리고 Sort Merge의 경우 대등하게 합병되기 때문에 선행 또는 후행 테이블이 존재하지 않는다.
▷ 예제
--Sort Merge Join SELECT * FROM pubs.dbo.employee e inner merge join pubs.dbo.jobs j on e.job_id = j.job_id |
[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]
3) Hash JOIN (해시 조인)
해시를 사용하는 경우는 해당 조인 키가 전혀 정렬되어 잇지 않고, 인덱스도 존재하지 않으면서 비교해야 할 대상은 많은 때이다.
▷ 예제
--Hash Join SELECT * FROM pubs.dbo.employee e inner hash join pubs.dbo.jobs j on e.job_id = j.job_id |
[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]
출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=Q0hy9Ukyo7F1lYXWdFWSq9Vt+PUzeDa9&qb=wd/DuLfnx8HBtsDO&pid=ff9h6loi5UCssc3Oi2hsss--004245&sid=SS9Xc5EmL0kAACI-ck0
'-- MSSQL' 카테고리의 다른 글
SQL Server 인덱스 설정의 효과 (0) | 2009.09.17 |
---|---|
Top Tips for Effective Database Maintenance (0) | 2009.08.31 |
Single User, Multi User 변환 (0) | 2009.08.31 |
sp_detach_db, sp_attach_db (0) | 2009.08.29 |
Index ReOrganize (0) | 2009.08.03 |
RECENT COMMENT