데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

함수 중복사용시

맨즈밤 2013.07.19 11:38 Views : 5056

움..질문이라기 보다 예상외의 실행계획이 있어서 올립니다.   한 쿼리에 함수를 중복사용했을때 실행계획에 관해서입니다.

2백만건이 있는 고객테이블이 있고,  고객의 가입매장명을 가져오는 FN_매장명()   함수가 있습니다.

 

 select  'A'
  from 고객테이블 A
GROUP BY dbo.FN_매장명(A.가입매장코드)

 

실행시 40초가 걸렸습니다..그렇다면  

 

 select  dbo.FN_매장명(A.가입매장코드)
  from 고객테이블 A
GROUP BY dbo.FN_매장명(A.가입매장코드)

 

이거는?   역시 40초 나오더군요 . 함수를 두번쓰긴했어도 한번의 연산으로 값을 공유했습니다.   실행중간에 Expr1001 이런식으로

중간값을 만든후 재사용했습니다. 그렇담

select dbo.FN_매장명(A.가입매장코드),
  dbo.FN_매장명(A.가입매장코드)+'A',
  dbo.FN_매장명(A.가입매장코드)+'B',
  dbo.FN_매장명(A.가입매장코드)+'C',
  dbo.FN_매장명(A.가입매장코드)+'D'
  from 고객테이블 A
GROUP BY dbo.FN_매장명(A.가입매장코드)

 

요것은?.....역시 중간결과값의 재사용으로 인해서 함수가 불필요하게 반복수행되지는 않습니다...그럼 그룹을 빼면?

 

select dbo.FN_매장명(A.가입매장코드),
  dbo.FN_매장명(A.가입매장코드)+'A',
  dbo.FN_매장명(A.가입매장코드)+'B',
  dbo.FN_매장명(A.가입매장코드)+'C',
  dbo.FN_매장명(A.가입매장코드)+'D'
  from 고객테이블 A

 

함수를 하나만 썼을때와 비교해서 몇배가 느려졌습니다...  함수를 5번이나 실행했구요.  중간값도 만들긴 하는데 각각 Expr1001, Expr1002

....Expr1005  개를 각각 연산해서 만들구요.

함수 사용시,,,특히 여러번 중복해서 사용할때는 실행계획을 꼭 살펴보고 최소한으로만 탈수있도록 해야할듯 합니다.

No. Subject Author Date Views
7034 mdf 파일 손상히 tail log 백업 방법 [2] Tommy Hilfi 2013.07.23 5499
7033 질문드립니다 [1] 잉잉 2013.07.23 4776
7032 그룹별 곱하기 [1] taz2315 2013.07.23 9075
7031 쿼리 문의드립니다 [1] kyuni01 2013.07.22 4327
7030 커서 문법 질문이 있습니다.(초보) [1] alima 2013.07.22 4952
7029 도와주세요!! MYsql 쿼리입니다.ㅜ [1] rx프로그래머rx 2013.07.22 6178
7028 xlsx 엑셀 파일 (시트당 50만건) 데이터를 MS SQL 2000 또는 2005로 옮기기 [5] Larry 2013.07.22 13263
7027 공백인식 문의입니다. [2] 거저먹네 2013.07.22 6808
7026 [급] 복구 방법 문의 [2] 아레아 2013.07.22 4935
7025 MSSQL 2012에서는 *= 안먹히나요??? [3] 떨거지희 2013.07.22 8310
7024 쿼리 실행계획 확인 부탁드립니다. [1] 꿀덩이 2013.07.22 4753
7023 계층형 게시판에서 정렬순서. 클리티에 2013.07.22 9526
7022 MS SQL 디비 BAK 파일 복원 후, 검색 에러 shout 2013.07.20 5356
7021 짧은 쿼리인데 궁금한 부분이 있어 질문드립니다. [1] 트리플 2013.07.19 4239
7020 ms sql LDF 가 어떤 놈인가요 [2] 홍훈아 2013.07.19 5709
7019 안녕하세요 mssql 에 관해서 질문을 좀 할려고 글을 올립니다. [1] 쿠아앙 2013.07.19 5149
» 함수 중복사용시 [2] 맨즈밤 2013.07.19 5056
7017 bcp 에 대해 질문 드립니다. [2] 나는짱이야 2013.07.19 5081
7016 간단한 쿼리 질문입니다. [2] 거저먹네 2013.07.18 5236
7015 통계 관련 쿼리 질문 드립니다. [1] BlueSi 2013.07.18 4753





XE Login