올 해 이전에 가입한 회원(작년까지 가입한 회원)을 조회하고 싶어서 조건을 걸려고 한다.
이 때 여러가지 방법을 시도해봤는데 SQL 의 속도는 다음과 같았다. (DB 성능과 데이터 양에 따라 절대 시간은 차이가 나고 속도 비율만 보면 됩니다.)
하드코딩
AND dm.MemberRegisterDate < '2020-01-01'
>> 4.2s
수식을 비교 연산자에 직접 대입
AND dm.MemberRegisterDate < (CONVERT(VARCHAR(10), DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0), 23))
>> 4.2s
수식을 통해 변수에 값을 저장하고 사용
DECLARE @ThisYearFirstDay VARCHAR(10)
SET @ThisYearFirstDay = (CONVERT(VARCHAR(10), DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0), 23))
...
AND dm.MemberRegisterDate < @ThisYearFirstDay
>> 2분 넘어가서 그냥 취소함...
변수에 담아두면 재사용성도 좋고 성능은 수식에 직접 대입한 것과 같을줄 알았는데 아니었다...
'개발자 > Database & SQL' 카테고리의 다른 글
SQL View 만들기 (0) | 2020.12.29 |
---|---|
SQL 마지막 날짜 데이터만 가져오기 (0) | 2020.12.24 |
SQL 올 해 시작 날짜, 마지막 날짜 구하기, etc... (0) | 2020.12.22 |
SQL Null 값이 포함된 데이터 검색 (0) | 2020.12.09 |
SQL 테이블 가로로 붙이기 (0) | 2020.12.04 |