다음 글에서 나온것처럼
http://dream6.tistory.com/entry/02-성능-스칼라-함수를-SELECT절이나-WHERE절에-썻을-경우-성능-저하
문제점
가뜩이나 스칼라함수는 WHERE절에 성능 문제가 있는데 암호화 함수까지 WHERE절에 넣어버리면 결과가 언제 나올지 가늠할수 없다..
select resoc_id
from t_n_mem
where 1=1
AND resoc_id =
'0000000011111111'
AND master.dbo.dec_char_sel(0, 'SSN', SSN) = '9612250000001'
이와 같이 했을 경우 T_N_MEM 테이블의 레코드 개수만큼 암호화 함수가 실행된다.
해결 방법
암호화를 외부에서 해서 이후 값을 테이블과 비교해서 하던지 아니면 WITH문을 쓰던지 해야한다.
1. 외부에서 암호화를 해서 비교
select resoc_id
from t_n_mem
where 1=1
AND resoc_id = '0000000011111111'
AND SSN = 'XD01K3J43KLDJFDHHDOWEUOJUOEREOY'
2. WITH 문 사용
WITH T_ENCRYPT (SSN)
AS
(
SELECT master.dbo.dec_char_sel(0, 'SSN', '9612250000001') SSN
)
select resoc_id
from t_n_mem
where 1=1
AND resoc_id =
'0000000011111111'
AND SSN = (SELECT SSN FROM
T_ENCRYPT)
'MSSQL > 성능' 카테고리의 다른 글
02. (성능) 스칼라 함수를 SELECT절이나 WHERE절에 썻을 경우 성능 저하 (0) | 2016.01.18 |
---|---|
01. (성능)인덱스를 이용 못하는 경우(자바 유니코드 문제) (0) | 2016.01.18 |
같은 쿼리가 다른 머신에서 실행시간 차이가 있을경우 (0) | 2015.12.17 |
MSSQL 튜닝 / DB단 (0) | 2015.12.17 |
이전 로우를 찾는 방법(MSSQL 2012 이후) (0) | 2015.12.17 |