함수 중복사용시

맨즈밤 2013.07.19 11:38 Views : 5077

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

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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 1064
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 1666
7036 해외 호스팅 서버쪽에 SQL2005 서버로 이전 작업 문의드립니다. [2] Larry 2013.07.23 5238
7035 쿼리 고수님들께 문의좀 드립니다. ^^ [2] 남자나무 2013.07.23 5589
7034 mdf 파일 손상히 tail log 백업 방법 [2] Tommy Hilfi 2013.07.23 5521
7033 질문드립니다 [1] 잉잉 2013.07.23 4792
7032 그룹별 곱하기 [1] taz2315 2013.07.23 9106
7031 쿼리 문의드립니다 [1] kyuni01 2013.07.22 4342
7030 커서 문법 질문이 있습니다.(초보) [1] alima 2013.07.22 4974
7029 도와주세요!! MYsql 쿼리입니다.ㅜ [1] rx프로그래머rx 2013.07.22 6199
7028 xlsx 엑셀 파일 (시트당 50만건) 데이터를 MS SQL 2000 또는 2005로 옮기기 [5] Larry 2013.07.22 13331
7027 공백인식 문의입니다. [2] 거저먹네 2013.07.22 6833
7026 [급] 복구 방법 문의 [2] 아레아 2013.07.22 4954
7025 MSSQL 2012에서는 *= 안먹히나요??? [3] 떨거지희 2013.07.22 8480
7024 쿼리 실행계획 확인 부탁드립니다. [1] 꿀덩이 2013.07.22 4770
7023 계층형 게시판에서 정렬순서. 클리티에 2013.07.22 9579
7022 MS SQL 디비 BAK 파일 복원 후, 검색 에러 shout 2013.07.20 5373
7021 짧은 쿼리인데 궁금한 부분이 있어 질문드립니다. [1] 트리플 2013.07.19 4245
7020 ms sql LDF 가 어떤 놈인가요 [2] 홍훈아 2013.07.19 5736
7019 안녕하세요 mssql 에 관해서 질문을 좀 할려고 글을 올립니다. [1] 쿠아앙 2013.07.19 5175
» 함수 중복사용시 [2] 맨즈밤 2013.07.19 5077
7017 bcp 에 대해 질문 드립니다. [2] 나는짱이야 2013.07.19 5098





XE Login