모든 컬럼을 pk하는 경우? 0 1 1,325

by 만년설 [SQL Query] 인덱스 [2016.11.01 10:55:01]


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 응용프로그램을 만드는 개발자입니다. 

 

by 마농 [2016.11.01 11:42:18]

1. 채번하는 경우 모든 컬럼을 PK 로 한다???
  - 이 말만 듣고 통상적으로 그럴만하다라고 떠오르는건 없네요.
  - 실제 테이블 데이터가 어떤 형태로 들어가 있는지 봐야 알 수 있을 듯 하네요.


2. 오라클 힌트는 안좋다?
  - 잘 모르고 엄한데 사용하면 안좋은 거죠.
  - 적재적소에 잘 사용하면 좋은 것입니다.
  - 적재적소에 잘 사용하는 능력을 가진자가 드물기 때문에
    통상적으로 사용하지 말라고 권고하는 거죠.

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