古い文書には存在しないプロパティとの下位互換性をサポートするためにクエリを拡張しなければならなかったので、IS_DEFINED
メソッドを使用してブール値フィールドが存在するかどうかを確認しましたオブジェクト上にDocumentDB Extreme Query Cost IS_DEFINEDを使用
は、私はちょうどこれを使用することによってRUコストがパネルから上昇1.5万%
SELECT T.id行くことに気付きましたT WHERE T.customerId = @CustomerID
コスト:〜3 RU
SELECT T.idパネルFROM T WHERE T.customerId = @CustomerID AND(T.archived = false)を
COST:〜4 RU
SELECT T.idパネルFROM T WHERE T.customerId = @CustomerID AND(IS_DEFINED NOT(T.archived)OR T.archived = false)を
COST:〜450 RU
これはブール値フィールドではかなり大きな差があり、実際にスループットに打撃を与えます。
UPDATE:ここに関連する問題が見つかりました - DocumentDB Query Requires Unexpected High RUs
ではないが問題であるように見えるので、のようなロジックのいくつかの種類必要があります:パネルFROM
SELECT T.idをT WHERE T.customerId = @CustomerId AND IIF(IS_DEFINED(T.archived)、T.archived、false)= false
しかし、それでもスキャンは関係すると思いますか?
UPDATE 2:
ずなどの操作を実行しようとしました、そして、それは〜750で入って来たが、それは1500のidフィールドの結果セットを持っていました。
Tristan - 「感謝します」、「アドバイスをお願いします」などの明示的なコメントを追加してください。これは完全に不要であり、削除する必要があります。私はすでに一度それを削除し、あなたはそれを再追加しました。これは不必要で、StackOverflowのコンテキストでは、まったく不要です。さらに:StackOverflowはボランティアで実行されるサイトなので、緊急性について言及するのは順調ではありません。 –
私はポストに触れていませんが、UPDATEとUPDATEの2つのパートを追加します。 –
調査するために、クエリのエンドポイントとアクティビティIDを[email protected]に電子メールで送信できますか?Is_Definedではインデックスを使用できませんが、クエリでは引き続きCustomerIDインデックスを使用できます。 –