특정 테이블 1개만 analyze를 하였습니다.
평소에 100ms정도로 조회되던 쿼리가 analyze 후에는 48000ms로 조회됩니다.
더 빨라지지는 못할지언정 엄청 느려졌습니다.
어떻게해야 복구할 수 있나요?
그런데 해당 테이블만 조회했을경우엔 속도가 빠르지만 다른 테이블과 union all 했을 경우에만 느려집니다...
혹시 Hint를 쓰고 계시지는 않는지요..
아니요 힌트를 쓰고있지 않습니다.
테이블을 drop 후 create하니 정상적으로 돌아왔습니다.
왜그런걸까요?
export 한 후 import 하였을 때는 별다른 효과가 없네요.
해당 analyze한 테이블이 union all 만 되면 쿼리속도가 엄청 늦어집니다..
참 왜이런지 모르겠네요..
analyze정보가 sql에서 요구하는 부분과 맞지않는듯합니다
저도 그런경험이 있었어요
analyze정보를 다시 drop하느라 혼쭐났었던적이 있었습니다
동안님,, 혹시 analyze 정보만 Drop 하는 명령어와 같은 기능이 있나요?
저는 테이블을 Drop 후 기존에 Export 해두었던 테이블을 Import 해서 해결했습니다만...
ANALYZE TABLE 테이블명 DELETE STATISTICS; http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_46a.htm#2086322
EXEC DBMS_UTILITY.ANALYZE_SCHEMA(user,'DELETE'); http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96612/d_util2.htm#1002088
=>특정 테이블 1개만 analyze를 하였습니다
=>해당 테이블만 조회했을경우엔 속도가 빠르지만 다른 테이블과 union all
님에 질문중 위부분에 원인이 있을수 있습니다
ANALYZE는 어짜피 데이타가 많아지고 스키마가 늘어나면 수동으로 해결해야할 일정부분을 오라클에 맡겨두는거고
물론 옵티마이져가 사용자가 원하는 최적에 plan이라고 단정하기에는 무리가 있습니다
개인적으로는 ANALYZE 을 유지하면서 문제가 되는부분은 수동으로 쿼리문 변형을 하는게 합리적이지 않을까 합니다.