>데이터 베이스 >MySQL 튜토리얼 >SQL은 WHERE 절에서 단락 평가를 보장합니까?

SQL은 WHERE 절에서 단락 평가를 보장합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-21 02:24:14550검색

Does SQL Guarantee Short-Circuit Evaluation in WHERE Clauses?

SQL WHERE 절 평가: 단락 설명

SQL의 WHERE 절과 관련하여 자주 묻는 질문은 부울 표현식 평가에 관한 것입니다. SQL은 단락 평가를 사용합니까? 이는 결과가 확실해지는 즉시 평가가 중지되어 표현식의 뒷부분을 우회할 수 있음을 의미합니다.

ANSI SQL 표준 및 평가 순서

ANSI SQL 표준은 WHERE 절에 대한 단락 평가를 명시적으로 정의하지 않습니다. ANSI SQL Draft 2003에서는 식 평가 순서가 구현에 따라 다르다고 지정합니다. 이로 인해 단락 구현 여부에 대한 결정은 개별 데이터베이스 공급업체에 맡겨집니다.

데이터베이스별 구현

따라서 단락 동작은 데이터베이스 시스템에 따라 크게 다릅니다.

  • SQL Server: ANDOR 연산자에 대한 단락 평가를 지원합니다.
  • Oracle: 기본적으로 단락 평가를 지원하지 않지만 OPTIMIZER_MODE 힌트를 사용하여 활성화할 수 있습니다.
  • MySQL: AND 연산자에 대해서만 단락 평가를 지원합니다.

예시

다음 쿼리를 고려해보세요.

<code class="language-sql">SELECT * 
FROM Table t 
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) </code>

@keyNULL인 경우 첫 번째 조건(@key IS NULL)은 TRUE입니다. SQL Server에서는 전체 결과가 이미 알려져 있으므로 단락 평가에서는 두 번째 조건(@key IS NOT NULL AND @key = t.Key)을 건너뜁니다.

핵심 요약

ANSI SQL 표준은 WHERE 절에서 단락 평가를 보장하지 않습니다. 그 존재와 동작은 데이터베이스에 따라 다릅니다. 평가 전략을 이해하려면 항상 데이터베이스 시스템 설명서를 참조하세요.

위 내용은 SQL은 WHERE 절에서 단락 평가를 보장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.