답변:
SQL이 선언적 언어임을 인식하는 것이 중요합니다. SELECT
쿼리 당신은 지정을 반환해야 논리적 결과를 썼다. 결과를 반환하는 효율적인 물리적 전략을 결정하는 것은 데이터베이스 엔진, 특히 쿼리 최적화 프로그램에 달려 있습니다.
최종 실제 실행 계획은 옵티마이 저의 추론 능력, 문제에 소요되는 시간, 적합한 액세스 방법 (주로 색인 및 구체화 된 뷰)의 가용성, 대표 통계 정보 및 특정 코드 경로에 따라 다릅니다. 쿼리 사양은 최적화 코드를 따릅니다.
일반적으로, 데이터베이스 설계가 관계형 인 경우, 올바른 액세스 방법 및 정확한 통계 정보를 제공하고 쿼리를 잘 작성하면 옵티마이 저는 일반적으로 작성된 양식에 대해 너무 걱정할 필요없이 합리적인 물리적 실행 전략을 찾습니다. 쿼리 사양이 너무 많습니다.
다른 (하지만 의미 적으로는 동일한) 구문을 사용하여 동일한 논리 요구 사항을 표현하는 것이 실제 실행 계획에 영향을 미치는 경우가 항상있을 수 있지만, 이는 2 차적인 문제입니다. 다시 말하지만, 위에서 언급 한 모든 기본 사항을 다룬 후에는 런타임 특성을 수용 할 수없는 경우에만 쿼리를 다르게 표현하는 것이 좋습니다.
간단한 결절 WHERE
절 술어 의 서면 순서가 (질문에서 와 같이) 실제 실행 계획에 측정 가능한 방식으로 영향을 미치는 것은 극단적으로 드물다 . 요컨대, 이것은 걱정하는 시간이 아닙니다. 데이터베이스 디자인, 색인 및 통계 정보를 먼저 얻으십시오.
질문에 직접 (최종적으로!) 답변하기 위해 여분의 중복 조건을 추가 하면 성능 이 향상 될 수 있지만보다 효율적인 액세스 방법을 사용할 수있는 경우에만 가능합니다 (예 : (BitField, VarcharField)에 인덱스 만있는 경우). (VarcharField)에 이미 인덱스가 있으면 오버 헤드 만 추가합니다.
구현 세부 정보로서 아니요, SQL Server는 데이터 형식이나 계산상의 복잡성에 따라 비교 비용을 고려하지 않습니다. 실제로, 스칼라 연산 에는 전혀 비용이 거의 들지 않지만 완전히 별개의 주제로 이어집니다.
관련 질문 :
논리 연산자 OR AND WHERE
SQL Server 2008 의 조건 및 조건 순서 및 상수 식
성능에 영향을 미치는 비트 연산자
이상한 SQL 문 동작