본문 바로가기
IT 개발

MSSQL 속도 개선 - SARGable 연산자 사용

by Angela- 2024. 11. 26.

 

SARGable 는 관계형 데이터베이스에서 쿼리 실행 속도를 높일 수 있는 쿼리의 조건을 의미합니다.
시스템 리소스를 더 적게 사용하면서, 더 빠른 시간에 결과를 얻을 수 있습니다.
가능하다면 SARGable 연산자를 사용하는 것이 더 효율적이라고 말할 수 있습니다.

 

SARGable 연산자         :  =, >, <, >=, <=, BETWEEN, LIKE, IS [NOT] NULL
Non-SARGable 연산자 :  <>, IN, OR, NOT IN, NOT LIKE

 

 

● 예시 1 

SELECT   T.Code
FROM      Table1 AS T
WHERE   LEFT(T.Code, 1) = 'A' ;

SELECT   T.Code
FROM      Table1 AS T
WHERE  T.Code like 'A%' ;

 

 

● 예시 2

SELECT   T.RegDate
FROM      Table1 AS T
WHERE   YEAR(T.RegDate) = '2022' ;

SELECT   T.RegDate
FROM      Table1 AS T
WHERE   T.RegDate BETWEEN '20220101' AND '20221231'

 

 

● 예시 3

SELECT   T.ID
FROM      Table1 AS T
WHERE   T.ID * 2= 10 ;

SELECT   T.ID
FROM      Table1 AS T
WHERE   T.ID = 10 / 2 ;

 

 

● 예시 4

SELECT   T.STATUS
FROM      Table1 AS T
WHERE   ISNULL(T. STATUS, 'N') = 'N' ;

SELECT   T.STATUS
FROM      Table1 AS T
WHERE   ( T.STATUS  IS NULL  OR  T. STATUS  = 'N' )  ;

 

 

● 예시 5

SELECT   T.STATUS
FROM      Table1 AS T
WHERE   ISNULL(T. STATUS, 'N')  <>  'N' ;

SELECT   T.STATUS
FROM      Table1 AS T
WHERE   ( T.STATUS  IS NOT NULL  AND  T. STATUS  <>  'N' )  ;

 

 

● 예시 6

SELECT   DISTINCT T1.ID, T1.Code
FROM      Table1 AS T1

                 INNER JOIN Table2 AS T2  ON T1.ID = T2.ID

                                                                OR T1.Code = T2.Code ;

SELECT   T1.ID, T1.Code
FROM      Table1 AS T1
                 INNER JOIN Table2 AS T2  ON T1.ID = T2.ID
UNION
SELECT   T1.ID, T1.Code
FROM      Table1 AS T1
                 INNER JOIN Table2 AS T2  ON T1. Code = T2. Code

'IT 개발' 카테고리의 다른 글

MSSQL 함수- STRING_AGG  (1) 2024.12.08
MSSQL 함수 - CHARINDEX  (0) 2024.12.05
MSSQL - 파티션 테이블 활용  (0) 2024.12.03
MSSQL - 파티션 테이블 생성  (0) 2024.11.30
MSSQL 속도 개선 - 데이터 형식 우선순위  (1) 2024.11.28