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 |