서버 개발/SQL 문법

[MSSQL] 힌트 사용 방법

지노윈 2020. 4. 22. 14:10
반응형

 

WITH (INDEX( <Index_Name>)) : 원하는 인덱스 사용 하도록

SELECT * FROM table WITH(INDEX(<table_name_ix>))

 

WITH (INDEX(0)) : 풀 스캔 하도록

SELECT * FROM table WITH(INDEX(0))

 

WITH (NOLOCK) : 읽기 락 없이 테이블 읽게

SELECT * FROM table WITH(NOLOCK)

 

INNER HASH JOIN / INNER LOOP JOIN : 쿼리로 Join 방식 결정

nested loop/hash merge join 결정

SELECT * FROM table A

INNER HASH JOIN table2 B

ON A.xx= B.xx

 

SELECT * FROM table A

INNER LOOP JOIN table2 B

ON A.xx= B.xx

 

{LOOP | MERGE | HASH } JOIN : Join 힌트

전체 쿼리에서 모든 조인 연산이 nested loop join, sort merge join 또는 hash join 의해 수행되도록 지정합니다 

쿼리 힌트에서의 조인 형식은 두 가지 이상을 지정할 수도 있습니다.  'OPTION (loop join , merge join)' 이라고 지정할 수는 있습니다. 이 경우 실제로 적용되는 옵티마이저에 의해 코스트가 싸다고 분석 된 것이 사용됩니다.

만약 조인 힌트와 쿼리 힌트에서 둘 다 조인 형식을 지정한다면 조인 힌트의 것이 우선권을 가진다.

 

SELECT * FROM table A JOIN table2 B ON A.xx= B.xx

OPTION (MERGE JOIN);

 

{HASH | ORDER } GROUP : 집계 형식

쿼리의 GROUP BY, DISTINCT 또는 COMPUTE 절에 지정된 집계에서 해시나 정렬을 사용하도록 지정합니다.

 

SELECT ... FROM table 

GROUP BY xx, yy

ORDER BY xx, yy

OPTION (HASH GROUP) ;

 

OPTION(FORCE ORDER)

from 절에 나열된 순서대로 JOIN 한다.

SELECT * FROM table A, table2 B WHERE A.xx= B.xx

OPTION (FORCE ORDER);

 

'서버 개발 > SQL 문법' 카테고리의 다른 글

[SQL] LEFT Outer Join, RIGHT Outer Join, FULL Outer Join  (0) 2020.04.19