view를 가지고 조회시 order by대신 index정렬이 가능한가요? 0 2 1,737

by 꾼이되자 [2009.06.09 09:15:52]


예전에 한번 게시판에 적어놓았던 손대기 싫은 뷰가 있었는데요 ^^

지금은 view안에 hint절 등을 이용하여 create view 결과

현재는 view를 조건절을 넣고 조회 시 3초이내에 걸립니다...

헌데~ order by를 사용하다 보니 Full Scan이라서 그런지 속도가 다시 느려져요...

성격이 레포트 성격이라 order by는 필수..

view는 아주 복잡하게 union all 으로 되어 있어서 view Merge가 되지 않는 상태일꺼 같습니다

그럼~  view merge가 되지 않으면 view에서 나온 Data를 가지고 밖의 조건을 가지고 수행된다는 이야긴데요...

(위2줄 부분 맞는 이야긴가요?? 책에서 읽은 내용이긴 헌데... 실제론 어떤지...^^)

아무튼... view안에 Union all안에 몇개의 Table들이 join되어 있는데요

만든 view의 어떤 컬럼들의 기준으로 order by가 가능한지 묻고 싶습니다.

order by는 여러개의 컬럼순인데요.... 그것 역시도 Union all안에 있는 서로 다른 Table의 컬럼입니다...ㅠㅠ

 

by 마농 [2009.06.09 09:30:27]
union all을 사용했다고 하더라도 조건이 뷰 안으로 파고들 수 있습니다.
조건에 해당하는 컬럼에 대한 변형(가공)이 없다면요.
정렬은 조건 처리 후 일어나게 되는 것이니 얼마나 건수를 줄여주느냐가 관건이겠네요.
뷰 안에서의 힌트 사용은 자제하세요. 힌트로 인해 뷰머징이 않일어 날수도 있습니다.
union all 각각에 대해 인덱스 정렬을 한다고 해도 정작 필요한것은 전체 정렬입니다.
각각의 인덱스 정렬은 오히려 시간낭비일것 같아요.
이곳 사이트 좌측메뉴 보시면 [오라클리더스컬럼]이 있습니다.
이곳에 강정식님께서 View의 힌트 사용에 대해 정리하신 내용이 있으니 참고하세요.

by 꾼이되자 [2009.06.09 11:03:33]
마농님 감사합니다...
말씀해주신 글을 잘 읽어보았습니다...
읽어보면서 '이렇게도 되는구나' 하고 생각했습니다.
유익한 정보 감사합니다!!
VIEW HINT에 대해서 좀더 많은 자료가 있었으면 참 좋겠습니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입