hint /*+index(table index_name)*/ 을 사용하는데 주의해야 할게 있나요? 0 4 1,151

by 신입사원 [2016.01.21 13:45:32]


어제 답변 달아주신 분들 다시한번 감사드립니다.

다름이 아니라 accsee time 을 줄여보려고 index를 이용하는 공부를 하고 있는데

hint 를 사용할때 주의해야 할 점이 있나 해서 질문 남겨봅니다.

 

by 아발란체 [2016.01.21 13:53:54]

힌트는 전반적인 이해를 두고 사용하셔야 하며, 힌트를 지향하는 것은 바람직하지 않습니다.

대부분 힌트를 쓰는 것이 아니라, 대부분 힌트를 쓰지 않고도 빠른 처리가 되도록 하는 것이 바람직한 사용입니다.

제목에 써주신 힌트 사용 부분만 보면, 힌트 쓰는 방법중 하나로, 인덱스를 꼭 쓰겠다는 것인데, 특별한 경우가 아니라면 이 부분은 그냥 옵티마이저에게 맡겨, 상황에 따라 풀스캔 타도록 하는 것이 좋은 것 같습니다. 풀스캔이 효율적인데 꼭 인덱스를 타야 한다고 하면, 선별력이 없어 대부분을 스캔해야 되는 경우라면 풀스캔보다 효율이 떨어 질 수 있습니다.


by 신입사원 [2016.01.21 13:56:55]

where절에 여러 조건이 걸려있어서 access time 0.6초대가 나오다가

index를 거쳐서 access 할 경우 0.1초대가 나오는데 이건 올바르게 사용한건가요?

아니면 그냥 쿼리문이 덜 튜닝된건가..


by 아발란체 [2016.01.21 14:45:33]

넹, 말씀 주신 내용으로 봤을 때는 아래 데사님이 말씀주신 것처럼 사용SQL, 클러스터링팩터, 통계정보, 스키마 스크립트 등 왜 그렇게 되는 것인지 판단할 수 있는 내용이 필요할 것 같습니다.

아무튼 1초 미만이라면, 조금 더 걸려도 힌트를 쓰지 않고, 바인딩 처리하여 균등 분포를 이용한 소프트파싱 하는 것이 어떨까 합니다.


by DeSa [2016.01.21 14:10:47]

WHERE 절 조건과 정의된 INDEX를 봐야 올바르게 사용한것인지에 대한 판단이 설듯 합니다.

WHERE절에 INDEX가 걸려 있는 컬럼을 사용 하신다 하더라도 상황에 따라 그 INDEX를 타지 않을 수 있습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입