SQL WHERE 절 평가: 단락 설명
SQL의 WHERE
절과 관련하여 자주 묻는 질문은 부울 표현식 평가에 관한 것입니다. SQL은 단락 평가를 사용합니까? 이는 결과가 확실해지는 즉시 평가가 중지되어 표현식의 뒷부분을 우회할 수 있음을 의미합니다.
ANSI SQL 표준 및 평가 순서
ANSI SQL 표준은 WHERE
절에 대한 단락 평가를 명시적으로 정의하지 않습니다. ANSI SQL Draft 2003에서는 식 평가 순서가 구현에 따라 다르다고 지정합니다. 이로 인해 단락 구현 여부에 대한 결정은 개별 데이터베이스 공급업체에 맡겨집니다.
데이터베이스별 구현
따라서 단락 동작은 데이터베이스 시스템에 따라 크게 다릅니다.
AND
및 OR
연산자에 대한 단락 평가를 지원합니다.OPTIMIZER_MODE
힌트를 사용하여 활성화할 수 있습니다.AND
연산자에 대해서만 단락 평가를 지원합니다.예시
다음 쿼리를 고려해보세요.
SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key)
@key
이 NULL
인 경우 첫 번째 조건(@key IS NULL
)은 TRUE
입니다. SQL Server에서는 전체 결과가 이미 알려져 있으므로 단락 평가에서는 두 번째 조건(@key IS NOT NULL AND @key = t.Key
)을 건너뜁니다.
핵심 요약
ANSI SQL 표준은 WHERE
절에서 단락 평가를 보장하지 않습니다. 그 존재와 동작은 데이터베이스에 따라 다릅니다. 평가 전략을 이해하려면 항상 데이터베이스 시스템 설명서를 참조하세요.
위 내용은 SQL은 WHERE 절에서 단락 평가를 보장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!