WHERE中的DocumentDB括号

时间:2016-09-15 18:46:57

标签: azure-cosmosdb

括号是否会影响在WHERE子句中应用过滤条件的顺序?假设我有这个模式的数千个文档:

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

现在,在我的收藏中,所有文件属于50个批次中的一个。按批量进一步细分批次,每批大约1000个文档。

因此,在批处理small中查询大小为x的所有文档时,我想先减少所有不属于批处理的文档,减少要搜索的文档数量x,然后从该文档子集中选择大小为small的文档。

此查询是否会实现上述行为:SELECT * FROM r WHERE ((r.batchId = 'x') AND r.size = 'small')

1 个答案:

答案 0 :(得分:1)

括号不会影响过滤器表达式的计算方式。对于表达式评估顺序,这里可能重要的是WHERE子句中表达式的顺序(即(r.batchId ='x'AND r.size ='small')vs。(r.size ='small'AND r。 batchId ='x'))。虽然查询引擎重新排序表达式以实现最佳执行计划,但如果它断定更改顺序没有感知到的收益,它将保留输入查询表达式顺序。 在这种特定情况下,顺序无关紧要,因为两个表达式都将根据索引进行评估,并且只会加载满足这两个条件的文档。