함수 중복사용시

맨즈밤 2013.07.19 11:38 Views : 5083

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

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 28245
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 15455
7021 짧은 쿼리인데 궁금한 부분이 있어 질문드립니다. [1] 트리플 2013.07.19 4253
7020 ms sql LDF 가 어떤 놈인가요 [2] 홍훈아 2013.07.19 5742
7019 안녕하세요 mssql 에 관해서 질문을 좀 할려고 글을 올립니다. [1] 쿠아앙 2013.07.19 5181
» 함수 중복사용시 [2] 맨즈밤 2013.07.19 5083
7017 bcp 에 대해 질문 드립니다. [2] 나는짱이야 2013.07.19 5107
7016 간단한 쿼리 질문입니다. [2] 거저먹네 2013.07.18 5266
7015 통계 관련 쿼리 질문 드립니다. [1] BlueSi 2013.07.18 4777
7014 매월 매출데이터조회 ( 재질문드립니다 뇌용량폭발직전ㅠ_ㅠ) [14] MissingYou 2013.07.17 5254
7013 쿼리 질문을 하고 싶어서 이렇게 글을 올립니다. [4] 쿠아앙 2013.07.17 5068
7012 그룹별 count시 카테시안곱을 이용해 테이블에 1번만 접근해서 구하고자 합니다. [2] 무뚝이 2013.07.16 6027
7011 MSSQL 2000 => MSSQL2012로 변환후 디비연결 지연 [2] 떨거지희 2013.07.16 10082
7010 로그인, 사용자, 소유자 관련 내용이며 다른 서버의 DB복원 후 프로시저를 못찾습니다. [2] Larry 2013.07.16 5434
7009 님들은 통계 구성을 어케하시나요? [7] 파인드쿠폰 2013.07.16 4838
7008 프로시저 인자값 관련 문의 드립니다. [5] 세균장군 2013.07.16 5357
7007 MS SQL 설치시 파일 분리 [2] 버즈베잇 2013.07.16 7849
7006 두 테이블의 매출 상세내역 조인쿼리시 고유번호로 정렬 방법 문의 ? [3] chs217 2013.07.15 5222
7005 dateTime 인덱스에 관하여 잘문이 있습니다. [3] alima 2013.07.15 6270
7004 여려 sp의 공통의 문자열을 한번에 alter 하는 방법이 있을까요? [4] 상쿨 2013.07.15 7927
7003 Select 시 없는 데이터는 0 으로 나오게 하려면... [3] taz2315 2013.07.15 10473
7002 매월 매출데이터조회 [2] MissingYou 2013.07.14 5259





XE Login