2017-09-08 1 views
1

특정 파티션에 약 400,000 개의 문서가있는 파티션 된 모음이 있습니다. 이상적으로 이것은 더 분산 될 것이지만 트랜잭션 고려 사항을 위해 같은 파티션에있는 모든 문서를 처리해야합니다. 파티션 키와 2.58 RU의 사용량으로 빠르게 반환하는 문서 ID가 포함 된 쿼리가 있습니다.ORDER BY 절을 추가하는 DocumentDB가 과도한 RU를 사용합니다.

이 쿼리는 동적이며 잠재적으로 여러 문서 ID를 검색하기 위해 IN 절을 포함하도록 구성 될 수 있습니다. 따라서 결과가 일관된 순서로 유지되도록 ORDER BY를 추가했지만 절을 추가하면 RU가 거의 6,000 개로 급상승했습니다. WHERE 절이 정렬하기 전에 결과를 소수로 필터링해야한다는 것을 감안할 때, 나는이 결과에 놀랐다. WHERE 절 앞에 ORDER BY를 적용하는 것처럼 보입니다. 올바른 것이 아니어야합니다. 이 동작을 설명하는 ORDER BY 절이 있습니다.

{
"DocumentType는": "InventoryRecord"(에 PartitionKey 문자열)
"ID": "7867f600-c011-85c0-80f2-c44d1cf09f36는"(DocDB은 GUID를 할당 저장 가

예 문서

문자열)
"ItemNumber": "123345"(문자열)
"항목 이름": "항목 1"(문자열) 쿼리는 다음과 같이보고와
}

:

SELECT *를 c.DocumentType 여기서 c FROM = 'InventoryRecord'
및 c.id = '7867f600- c011-85c0-80f2-c44d1cf09f36 '
order by c.ItemNumber

+1

데이터 구조를 제공해야합니다. 귀하가 묻는 질문은 너무 일반적입니다. –

+0

주문을 신청하는 부동산 유형은 무엇입니까? 숫자 또는 문자열입니까? –

+0

[email protected]으로 전자 메일을 보내거나 팀이 조사 할 수 있도록 지원 티켓을 제출해주십시오. 공정 –

답변

0

적어도 범위 인덱스를 ItemNumber에 넣어야합니다. 이렇게하면 예상대로 주문이 이루어집니다. 당신의 인덱싱 정책의 또한이

{ "경로"과 같을 것이다 : "/ ItemNumber /?", "인덱스"[ { "종류": "범위", "dataType와" " 문자열 ", "정밀도 ": -1 } ] }