로딩
요청 처리 중입니다...

MSSQL 튜닝 학습 : NL조인, INDEX HINT

 MSSQL 튜닝 학습 : NL조인, INDEX HINT

여러 테이블들을 조인하고 특정 조건으로 조회 시 상당히 느린 경우를 발견했다. 그 중에는 계층형 테이블도 몇 개 있었는데 테이블의 데이터는 많은 편은 아니었지만 대략 범위가 10만 건에서 천 개 이하의 데이터를 조회할 때 최대 25분까지 걸렸다.

그 외에도 10분짜리도 있었고, 빠른건 4 ~ 10초 정도 걸렸다. 쿼리를 확인해보니 느려질 만하게 짜놓긴 했더라.

테이블의 데이터가 십만 건 정도 밖에 안되는데 1초 이상 걸린다? 쿼리를 다시 점검해 볼 필요가 있다.

MSSQL에서 비클러스터형 인덱스를 생성해놓으면 자동으로 쿼리 실행 시 처음 읽을 데이터와 가까운 인덱스로 조회하게 되는데 다른 쿼리에서 사용하려고 만들었던 비클러스터형 인덱스를 자동으로 타더니 이런 결과가 나왔다. 쿼리 속도는 23분 정도.

(우)에서 (좌) 첫 번째 Index Seek를 보면 비클러스터형 인덱스를 탄 걸 볼 수 있고, 읽은 행 수와 실제 행 수가 차이가 나는 게 보인다. 예상 I/O 비용은 0.006088...