MS SQL

인덱스를 타지않는 쿼리

0
인덱스를 타지 않는 쿼리로 다음과 같은 경우가 있는데  테스트결과 빨간색의 경우에는 확인을 하였습니다. 하지만 초록색의 결과는 실행계획을 확인해보았을 때 인덱스를 타는걸로 보여지는데 왜 그럴까요..?   -LIKE ‘%문자열%’로 검..
인덱스를 타지 않는 쿼리로 다음과 같은 경우가 있는데 
테스트결과 빨간색의 경우에는 확인을 하였습니다.
하지만 초록색의 결과는 실행계획을 확인해보았을 때 인덱스를 타는걸로 보여지는데 왜 그럴까요..?
 
-LIKE ‘%문자열%’로 검색하는 경우

SELECT * FROM TGOLFZON WHERE UserName = ‘%곽%’ -> UserName = ‘곽%’

 

-조건 절에 IS NULL , IS NOT NULL 구문을 사용하는 경우

 

-부정 연산자(!=,<>,NOT IN, NOT EXISTS)를 사용하는 경우

NOT일 경우 무조건 인덱스를 안타는 것이 아니라 타지만 일반적으로 NOT에 사용된 값이 아닌 데이터 비율이 높은 경우가 많기 때문에 인덱스를 타지 않는다.

 

-내부적인 데이터 형이 변경될 경우

SELECT * FROM TGOLFZON WHERE UserNo = ’33’ -> UserNo= 33

 
-OR 구문을 사용하는 경우

INDEX FULL SCAN 을 타게 됨

 
-인덱스 컬럼 절이 변경될 경우

SELECT * FROM TGOLFZON WHERE CashAmt * 100 > 10000 -> CashAmt = 10000/100

db 인덱스 index null
yous3163 2019-05-09
+
yous3163 님께서 2019-05-09에 MS SQL에 올린 질문

댓글

1개의 답변

1
MS SQL에서는 NULL도 인덱싱이 될 수 있습니다.  

MS SQL에서는 NULL도 인덱싱이 될 수 있습니다.

 

kimho 2019-05-10
+
사탕 주기
kimho 님께서 2019-05-10에 MS SQL에 올린 글
보관하기

댓글

조회수 2,444
답글 1
URL