안녕하세요. 쿼리를 실행하는 데 있어서 제가 생각하는 거와 다르게 실행이 되어 고수님들의 의견을 듣고자 이렇게 글을 남기게 되었습니다.
아래의 그림은 쿼리를 실행계획을 실행 한 겁니다.
kernlog라는 table에 index가 dn, revisetime에 걸려 있으며 risklevel에는 안 걸려져 있습니다.
두 쿼리를 비교하면 나머지는 다 똑같고 select하는 컬럼에 risklevel이 있는 거와 없는 거 차이인데
아래의 실행 계획을 보면 첫번째 쿼리는 nonclustered index를 타고 두번째 쿼리는 clustered index를 탑니다.
수행 비용은 첫번째 쿼리가 10%, 두번째 쿼리가 90%를 차지하고 있는데 왜 이런 현상이 나타나는건지?
index는 보통 where에 사용하는 컬럼에 index를 설정하는 걸로 알고 있었는데 그게 아닌지요?
select되는 컬럼에도 index를 걸어줘야 하는가요?
두서없이 글을 쓰게 되었습니다.
고수님들의 답변을 부탁 드리겠습니다.
|