1. 모든 컬럼을 채번하는 경우에 대해서 알고싶습니다.
이번에 화면 개발중에 쿼리 속도 문제로 인해서 테이블 인덱스를 확인해보았습니다.
테이블에 인덱스를 여러가지가 걸려있었는데 궁금한거는 칼럼이 15개 정도 되는데
이 모든 칼럼을 사용해서 pk 를 걸어 놓는 걸 보았습니다.
DBA 한테 물어보니까 채번하는 경우 이렇게 한다고하는데.. 좀더 자세한 설명을 듣고 싶습니다.
2. 프로그램에 오라클 힌트를 사용하는것은 안좋다고 들었는데 대안이 있을까요?
sql 개발 툴(orange 4.0)과, ibatis ORM 프로그램 사용했을때랑 쿼리 속도의 차이가 엄청나던데
업무 테이블을 5개 정도 union all 해서 쿼리를 작성했는데요.
테이블에 데이터는 많은 건 9000만건 들어 가있는 테이블이 있습니다.
orange 4.0 을 사용해서 개발중인데, web 어플리케이션에서 실행된 쿼리를 orange 에서 실행했을때
속도차이가 sql 툴에서는 0.5 초.. web 어플리케이션에서는 250초... 가 걸렸습니다.
웹에서 관련 문서를 차아보니 ibatis 에서 사용하는 bind 변수로 인해서 실행계획이 변경될수 있다는 내용을 확인하고,
sql툴의 실행계획에서 확인한 index를 가지고 오라클 hint 를 느려지는 곳을 찾아서 프로그램에 넣어주니, 속도가
거의 같아 졌습니다.
제가 듣기로는 실행계획은 옵타마이저가 분석한 통계정보를 활용하여 결정되고 개발자가 hint 사용해서 인데스 지정해주는거는 좋지 않은 방법이라고 하던데 다른 대안이 있을까요?
ps.
저는 JAVA 응용프로그램을 만드는 개발자입니다.