이전 문서에 존재하지 않을 수있는 속성과의 하위 호환성을 지원하도록 쿼리를 확장해야했습니다.이를 위해 IS_DEFINED
메서드를 사용하여 부울 필드가 있는지 확인했습니다 개체에.DocumentDB 익스트림 쿼리 비용을 사용하여 IS_DEFINED
난 그냥이를 사용하여 RU 비용이 패널로부터 15,000%
SELECT T.id가는 것으로 나타났습니다 T WHERE T.customerId = @CustomerID
비용 : ~ 3 패널 T WHERE T.customerId = @CustomerID AND (= 거짓 T.archived)
FROM RUSELECT T.id3210
비용 : 패널 T WHERE T.customerId = @CustomerID AND (IS_DEFINED NOT이 거짓 (T.archived) 또는 T.archived =)
FROM ~ 4 RU
SELECT T.id 비용 : ~ 450 RU
부울 필드의 경우 상당히 큰 차이점이 있으며 처리량에 큰 타격을줍니다.
UPDATE : 여기에 관련된 문제를 찾을 수 - DocumentDB Query Requires Unexpected High RUs
이 NOT이 문제가되는 것 같은데, 그래서 같은 논리의 일종 필요 : 패널 FROM
SELECT T.id을 T WHERE T.customerId = @ 고객 ID 및 IIF (IS_DEFINED (T.archived), T.archived, false) = false
하지만 여전히 스캔과 관련이있을 것 같습니까?
UPDATE 2 :
하지 않고 작업을 실행했는데, 그것은 ~ 750 억원,하지만 그것은 1500 개 ID 필드의 결과 집합을했다.
트리스탄 (Tristan) - '감사합니다', '조언 해주십시오'와 같은 명시 적 주석을 추가하지 말고 최대한 빨리 처리해야한다고 언급하십시오. 이것은 완전히 불필요하므로 제거해야합니다. 이미 한 번 제거한 후에 다시 추가했습니다. 그것은 불필요하며, StackOverflow의 컨텍스트에서 완전히 불필요합니다. StackOverflow는 자원 봉사자가 운영하는 사이트이므로 긴급 성을 언급하는 것이 잘되지 않습니다. –
나는 두 부분을 업데이트하고 업데이트하는 것을 제외하고는 게시물을 수정하지 않았다. –
조사 할 수 있도록 [email protected]에 쿼리의 끝점과 활동 ID를 전자 메일로 보내주십시오.Is_Defined가 인덱스를 사용할 수는 없지만 쿼리는 여전히 CustomerID 인덱스를 사용할 수 있습니다. –