2016-09-15 5 views
0

Do 괄호는 필터 조건이 WHERE 절에 적용되는 순서에 영향을 줍니까? 이 스키마가있는 수천 개의 문서가 있다고 가정 해보십시오.DocumentDB 괄호 (WHERE 절)

{ 
    "batchId": "<random_guid>", 
    "size": "<small, medium, or large>", 
    "details": 
    { 
     ... 
    } 
} 

지금 내 컬렉션에는 모든 문서가 50 개의 배치 중 하나에 속합니다. 배치는 크기별로 더 세분화되므로 배치 당 약 1000 개의 문서가 생성됩니다. 배치 x의 크기 small 모든 문서를 조회 할 때

따라서, 그 부분 집합에서 다음 배치 x에 속하고, 그렇지 않은 모든 첫번째 필터링 아웃에 의해 검색 할 문서의 수를 줄이기 위해 싶습니다 크기가 small 인 문서 만 선택하십시오.

이 쿼리는 상기 동작을 달성 : SELECT * FROM r WHERE ((r.batchId = 'x') AND r.size = 'small')

답변

1

괄호는 필터 식을 평가하는 방법에는 영향을 미치지 않습니다. 표현식 평가 순서에서 WHERE 절의 표현식 순서는 중요합니다 (예 : (r.batchId = 'x'AND r.size = 'small') 대 (r.size = 'small'AND r). batchId = 'x')). 쿼리 엔진은 최적의 실행 계획을 달성하기 위해 식을 재정렬하지만 순서를 변경하면 인식되는 이득이 없다고 결론을 내면 입력 쿼리 식 순서는 유지됩니다. 이 특정 경우 두 표현식 모두 색인에 대해 평가되고 두 ​​조건을 모두 만족하는 문서 만로드되므로 순서는 중요하지 않습니다.