주말 사이 바뀐... PLAN.. 0 13 2,519

by 조조맹덕 [2009.09.28 14:51:00]


주말전엔...

쿼리를 돌리면 PLAN에 TABLE ACCESS BY INDEX ROWID   B테이블

NESTED LOOPS

  TABLE ACCESS FULL A테이블

  INDEX RANGE SCAN  B테이블 조인 컬럼 인덱스

이렇게 나오던게...

 

똑같은 쿼리인데

 

오늘 오니

 

 HASH JOIN   
  TABLE ACCESS FULL A 테이블
  TABLE ACCESS FULL B테이블

이 되는군요..

사실.. 쿼리상으론 WHERE에 LIKE ’%검색값%’

이 2개가 들어가서.. 이게 맞긴 한데... 갑자기 이렇게 PLAN이 바뀐게 이해가 안가네요 ;;

 

속도도 한 4배 떨어지구요;;  TRACE 권한이 없어서 알수도 없고..

 

아, 설계 DB라서 주말사이 뭐 바뀔것도 없습니다.

 

쿼리는 SELECT

A.컬럼들...

B.컬럼들..

FROM A테블 A, B테틀 B

WHERE A.키 = B.키

AND A검색컬럼 LIKE ’%값%’

AND B검색컬럼 LIKE ’%값%’

입니다..

by 타락천사 [2009.09.28 14:54:58]
테이블의 통계정보 생성일이 언제인지 확인 해보세요

by 조조맹덕 [2009.09.28 15:06:36]
둘 다 25일 밤이네요. 즉 퇴근한 담에..

by 조조맹덕 [2009.09.28 15:10:02]
옵션보니 NESTED 에 NO 라고 되어있군요. 음...
이관한지 이틀째인 테이블이라... 이렇게 되면 원래
안되는건가요?

by 타락천사 [2009.09.28 15:54:18]
통계정보의 값 dba_tables.row_num 과
실제 select count(*) form 테이블명
하구 차이가 없는지 체크 해보세요
디폴트 모드면 토요일 오전에 통계정보가 수집되고,
오후에 데이타가 이행되었다면,
이행된 데이타에 의한 통계정보가 실제 반영전일수 있습니다.

by 조조맹덕 [2009.09.28 16:19:30]
행수 차이는 없습니다.실제 반영전이란 말씀이 잘 이해가 안갑니다. ^^;

by TeLl2 [2009.09.28 16:38:40]
이관하고 쿼리를 돌렸을때는 통계정보 수집 전이라 옵티마이저가 판단시
NESTED LOOP 실행이 더 효율적이라고 판단 하여 그렇게 실행 되었지만,
주말 동안 통계가 수집되어(10G에서부터는 별도의 설정이 없으면 자동 수집)
옵티마이저가 HASH JOIN이 더 효율적이라 판단하여
그렇게 실행 되었을 것으로 사료되네요.

by 조조맹덕 [2009.09.28 16:44:27]
같은 구조의 테이블을 만들어서 해보니 저번주의 그 구조대로 정상인걸로 보아..
제가 새로 이관한 테이블에 analyze가 되어.. 뭔가 바뀐거 같은데...
요걸 어디서 설정하는지, 바뀌는지... 는 계속 검색해봐도.. 모르겠네요 ㅠㅠ

by 조조맹덕 [2009.09.28 16:59:43]
지금 테이블 속성을 보니... 차이가 많이 나는군요. 둘다 nested는 no이고..
통계되어 analyze된 테이블의 속성이 훨씬 많은 것으로 보아.. 이걸 보고
어찌 끼워맞추긴 해야겠는데.. 뭐로 해야할지부터 검색을 해봐야겠네요 ^^;
찾아봐도 권한 없음 말짱 황인데 ^^;
답변 해주신 타락천사님과 tel2 님 감사합니다. 큰 도움이 되었습니다.


by 조조맹덕 [2009.09.28 17:34:23]
새로 만든.. 분석된 테이블과 분석되지 않은 테이블을 비교해보니..
행수 같이 insert된 값 빼고 값이 바뀐건...
GLOBAL_STATS 뿐이군요.
이게 영향을 준건가.. 음

by 조조맹덕 [2009.09.29 09:51:05]
오늘 와서 새로 만든 테이블로 검색하니..분명 통계가 수집되었음에도 그대로입니다. 음... 아마... 제 생각엔..기존 테이블이 인덱스가 너무 많이 잡혀서 아닐까..하는
생각입니다. 기존엔 13개 정도를 제가 필요한것만 추려서 7개로 만들었거든요.

by 조조맹덕 [2009.09.30 13:47:45]
-_- 이틀 지나서 오늘 보니... 다시 원복되었습니다.
이상하군요. 담날 통계수집을 확인할때만 해도 분명 통계수집된
상태에서도 빨랐는데...
원인을 당최 알수가 없음.

by finecomp [2009.09.30 15:10:28]
양쪽 Full + Hash로 보아
B.키로 시작하는 B쪽의 인덱스가 없어졌거나 뭔가 변경이 생겼을 것 같다는 느낌이 강하게 드네요...;;;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입