ssamce
176
2015-06-05 10:24:40
3
982

oracle 쿼리 관련하여 질문있습니다. 지적 부탁드립니다.!!


안녕하십니까 선배님!!

현업에서 2년차로 일하고있는 JAVA 웹 개발자입니다.


작년까지는 전 개발자가 짜놓은 소스를 보며 수정 및 보완 추가 하는 작업을 해왔다면

올해부터는 스프링기반으로 프로젝트를 리빌딩하여 새로 만드는 작업을 하고있습니다.

그러면서 제가 oracle 쿼리를 짤때 즐겨쓰는 방식이 있는데


지나가나 얼핏 듣기로 이런방식으로 쓰면 DB서버에 많은 부하를 주게되어 효율이 안좋다는 얘기를 들어

질문을 올리게됩니다.

db관련된 수업을 대학생때 그리 주의깊게 듣지 않았고 그 외에 따로 공부는 안한상태에 그냥 취미로 간간히 건드는정도였습니다.

현재 제가 사용하는 방식의 쿼리는


SELECT

  consulting_seq,

  consalt_year,

  consalt_month,

  consalt_day,

  online_appl_seq,

  (SELECT level2_content FROM ims_code_info WHERE level2_code = center_code) AS center_name,

  company_name,

  (SELECT level2_content FROM ims_code_info WHERE level2_code = consalt_type_code) AS consalt_type_code,

  (SELECT level2_content FROM ims_code_info WHERE level2_code = tech_code) AS tech_code,

  (SELECT level2_content FROM ims_code_info WHERE level2_code = purpose_code) AS purpose_code,

  content,

  result

FROM 

  TB400_RESULT_CONSULTING 

WHERE 

  consulting_seq = ${consulting_seq}$


이런식으로 사용하고있는데 효율이 안좋다고 얘기를 들은 부분이 

SELECT절 안의 (SELECT level2_content FROM ims_code_info WHERE level2_code = purpose_code) AS purpose_code,

이런식의로 SELECT로 묶어놓은부분입니다.

이게 정말 많은 부하를주고 좋지 않은 쿼리 습관인가요..??


저렇게 데이터를 뽑아오지 않으려면 많은조인이 들어가 쿼리가 너무 복잡해지고

라인수도 길어져서 최소화시켜보다보니 편해서 이런식으로 짜고있는데..

회사에 사수가 없어서 어떻게 질문할만한 곳이 따로 없습니다..ㅠㅠ

한번 검토해주시면 감사하겠습니다!!


0
  • 답변 3

  • 가을
    1k
    2015-06-05 10:37:39

    SELECT 절안의 서브쿼리는

    ROW수만큼 서브쿼리를 날리기에

    왠만하면 FROM절에서 가져오는게 낫습니다. 

     함수성 필드일경우에는 어쩔수없겠죠. 

  • ssamce
    176
    2015-06-05 10:41:19

    아 그렇군요

    그럼 쿼리 자체가 복잡해지더라도 조인해서 FROM절에서 가져와야겠네요

    쿼리는 하면 할수록 어렵군요 ㅠㅠ

  • 대풍창
    159
    2015-06-06 05:33:04
    네 outer로 조인하시는게 서브쿼리로 조회하는것보다 다 그런건 아니지만 일반적으로는 낫습니다. select절에 서브쿼리 쓴걸 스칼라 서브쿼리라고 하는데 저게 기준테이블 건수에는 스칼라 서브쿼리 데이터가 없어도 영향이 없어야 되기때문에 outer 조인을 하셔야 합니다.
  • 로그인을 하시면 답변을 등록할 수 있습니다.