함수 중복사용시

맨즈밤 2013.07.19 11:38 Views : 5074

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

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 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1309
7023 계층형 게시판에서 정렬순서. 클리티에 2013.07.22 9571
7022 MS SQL 디비 BAK 파일 복원 후, 검색 에러 shout 2013.07.20 5372
7021 짧은 쿼리인데 궁금한 부분이 있어 질문드립니다. [1] 트리플 2013.07.19 4243
7020 ms sql LDF 가 어떤 놈인가요 [2] 홍훈아 2013.07.19 5732
7019 안녕하세요 mssql 에 관해서 질문을 좀 할려고 글을 올립니다. [1] 쿠아앙 2013.07.19 5171
» 함수 중복사용시 [2] 맨즈밤 2013.07.19 5074
7017 bcp 에 대해 질문 드립니다. [2] 나는짱이야 2013.07.19 5095
7016 간단한 쿼리 질문입니다. [2] 거저먹네 2013.07.18 5256
7015 통계 관련 쿼리 질문 드립니다. [1] BlueSi 2013.07.18 4768
7014 매월 매출데이터조회 ( 재질문드립니다 뇌용량폭발직전ㅠ_ㅠ) [14] MissingYou 2013.07.17 5240
7013 쿼리 질문을 하고 싶어서 이렇게 글을 올립니다. [4] 쿠아앙 2013.07.17 5053
7012 그룹별 count시 카테시안곱을 이용해 테이블에 1번만 접근해서 구하고자 합니다. [2] 무뚝이 2013.07.16 6007
7011 MSSQL 2000 => MSSQL2012로 변환후 디비연결 지연 [2] 떨거지희 2013.07.16 10028
7010 로그인, 사용자, 소유자 관련 내용이며 다른 서버의 DB복원 후 프로시저를 못찾습니다. [2] Larry 2013.07.16 5417
7009 님들은 통계 구성을 어케하시나요? [7] 파인드쿠폰 2013.07.16 4829
7008 프로시저 인자값 관련 문의 드립니다. [5] 세균장군 2013.07.16 5339
7007 MS SQL 설치시 파일 분리 [2] 버즈베잇 2013.07.16 7799
7006 두 테이블의 매출 상세내역 조인쿼리시 고유번호로 정렬 방법 문의 ? [3] chs217 2013.07.15 5206
7005 dateTime 인덱스에 관하여 잘문이 있습니다. [3] alima 2013.07.15 6251
7004 여려 sp의 공통의 문자열을 한번에 alter 하는 방법이 있을까요? [4] 상쿨 2013.07.15 7568





XE Login