현재 SQL2016사용중인데 SQL문장중에 특정 코드의 명을 가져오거나 사용자별 설정정보는 가져오는 것을 function으로 처리증입니다.
즉
select
a.col1
,a.col2
, dbo.ufgetcodename('aaa', a.code) code1
, dbo.ufgetcodename('aaa', a.code2) code2
, dbo.ufConfig(사용자번호) conf1
, dbo.ufConfig(사용자번호) conf2
from aaaa a
이런 방식으로 사용되는데 코드관련 테이블과 사용자설정관련 테이블의 크기는 다 합쳐도 50M가 안됩니다.
하지만 쿼리저장소에서 실행되는 부분을 보니 이 함수가 실행횟수와 실행시간누적이 꽤 높습니다.
그래서 만약 이부분을 인메모리에 넣을 경우 성능이 많이 차이가 날수 있을까요?
혹시 해보신 분들이 있으시면 답변좀 부탁드립니다.
Comment 1
-
디비하는조씨
2017.06.27 11:08
함수 말고 조인으로 풀 수 없나요?
너무 복잡하여 함수를 써야 한다면 함수를 결정적 함수이거나 결정적 함수로 만들 수 있나요?
테이블 반환 함수가 가능할까요?
보통 함수로 처리한다면 조회한 row수 만큼 함수가 실행되게 되는데 이를 결정적 함수이며 테이블 반환인 함수로 작성한다면(CROSS APPLY)
함수 실행 횟수가 줄어들게 됩니다.
잘 바뀌지 않을 정보 같은데 aaaa를 메모리 테이블로 변경하지 말고 그 결과 자체를 저장해 두는 것도 생각해 볼 일입니다.
상황에 따라 PERSISTED 컬럼도 고려해봄직하죠