2016-09-15 10 views
0

WHERE句に適用されるフィルタ条件の順序には括弧が影響しますか?DocumentDB内の括弧

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

私のコレクションのすべてのドキュメントは、50個のバッチのうちの1つに属しています。バッチはサイズ別にさらに細分化されているため、バッチあたり約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'))。クエリエンジンは最適な実行計画を達成するために式を並べ替えますが、順序の変更による認識された利益がないと判断した場合、入力クエリ式の順序は保持されます。 この特定のケースでは、両方の式がインデックスに対して評価され、両方の条件を満たすドキュメントだけが読み込まれるため、順序はそれほど重要ではありません。