티스토리 뷰
http://support.microsoft.com/kb/197297/ko
용어 정리
Driving Table : 조인에서 기준이 되는 테이블 (= Outer Table)
Drived Table : 조인에서 결합 되어지는 테이블 (= Inner Table)
Nested Loop
- 두개 이상의 테이블에서, Driving Table에서 먼저 조건에 맞는 집합을 만들고, Drived Table에서 조건이 맞는 결과를 얻어낸 후 Row를 결합하여 원하는 결과를 추출하는 방식 (Driving Table의 한 행당 Drived Table의 데이터 검색이 일어난다).
- 부분 범위 처리 가능 (정지, 재개 가능. 예를 들어 조건에 만족하는 데이터 1000개만 얻어낸 상태에서, 요청이 들어올경우 1001~2000번째 값을 얻어오는 것이 가능)
- Driving Table에서 상대 테이블로 비교할 데이터 량이 적은 것이 효율에 좋다.
- 기준 테이블과 상대 테이블 간에 서로 대응하는 값에 인덱스가 걸려있는 것이 효율에 좋다.
- 특정 범위만 알아오는 쿼리에 유용.
- Any Join에서 사용 됨.
Sort Merge
- 쿼리에 따라 기준 테이블, 상대 테이블 각각 조인에 포함될 데이터들만 추려내 테이블로 구성한 후 (집합을 구성), 추린 테이블의 데이터를 정렬해서 사용한다.
(상황에 따라 테이블 전체를 정렬해서 사용하는 경우도 있다.)
- 두 테이블의 크기가 다를 경우, 유후 시간 발생 (정렬 되는 시간이 동일하지 않기 때문에)
- 지그 재그 계단식 비교 방식을 취함 (읽고 있는 데이터 포인터를 기억한 후, 다음 데이터를 읽을 때 이미 읽은 위치를 다시 읽지 않는 방식으로 검색량을 줄인다.)
- 지그 재그 계단식 비교를 하기에, 겹치는 값이 존재할 경우 이미 읽은 데이터를 다시 읽어야 되는 상황이 발생하기도 한다. (같은 값이 여러개일 경우, 방금 읽었던 값도 또 읽어야 하기에) 그래서, 겹치는 값이 존재할 경우 DBMS가 Hash Join을 사용할 가능성이 높다.
- 추려진 결과가 한번에 나오고, 그 전에는 결과를 낼 수 없기에, 처리 속도가 중요한 쿼리에서는 사용되지 않는다.
- Any Join 에서 가능 하지만 주로 Equal Join 에서 유용.
Hash
- 테이블 내의 모든 데이터에 해시 함수를 적용하여 해시 버킷에 담는다. 값 별로 버킷에 나누어 담기에, 해당 버킷을 읽음으로써 같은 값을 사용하는 집합에 억세스 하는 방식이다.
- 해시 테이블 구성 비용 (CPU, 메모리)이 크다.
- 값 별로 버킷에 담기기에 버킷 억세스는 같은 값을 찾는 경우에만 빠르다. 그래서, Equal Join 에서만 가능하도록 되어있다.
'Database > MS-SQL' 카테고리의 다른 글
Microsoft SQL Server Management Studio Express (0) | 2010.07.22 |
---|---|
MS-SQL 실행 계획 확인 (2) | 2009.03.26 |
MS-SQL 복원 (2) | 2009.03.26 |
MS-SQL 백업 (4) | 2009.03.26 |
MS-SQL 데이터 저장 방식 (0) | 2009.03.26 |
- Total
- Today
- Yesterday
- perfmon
- 리버스 엔지니어링
- TDD
- EzShortcut
- NDC2013
- 멀티스레드
- svn
- 루비
- 엘키
- TraceRoute
- 조엘 온 소프트웨어
- EasyExec
- CppSQLite
- c언어
- 게임데브포에버
- SQLite Spy
- 디자인 패턴
- 게임개발포에버
- Ruby on Rails
- 임백준
- Rails
- 루비 온 레일즈
- 디버깅
- RoR
- ftp
- SDL
- ruby
- 바로가기 프로그램
- MS-SQL
- 좋은 프로그래머
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |