Windows Azure DocumentDB查询中的Where IN语句

3

在 DocumentDB 查询中是否可以使用 IN 语句?例如:

SELECT * FROM  c  where c.FormId in(1,2,3,4,5,6,7,8,9,10)

我不想使用OR,因为有限制(只有6个)。
where (c.FormId =1 or c.FormId= 2 or c.FormId =3
Or c.FormId = 4  Or c.FormId=5 Or c.FormId=6)
1个回答

2
编辑 我们刚刚宣布支持查询中的IN(和其他)关键字。详情请见http://azure.microsoft.com/blog/2015/05/06/new-documentdb-sql-keywords-operators-and-functions/ 今天,您可以有两种方法来处理这个问题
1)编写一个UDF使其为您执行,并在select语句中调用。
2)或者,您可以针对每个id进行单独的查询,例如where FormId = 1以及另一个查询where FormId = 2等。
我知道这涉及多次服务器往返,但根据您的应用程序与DocumentDB服务之间的位置关系,同时执行多个查询可能不会那么糟糕。
当像这样发出带有单个谓词的多个查询时,允许查询非常高效,因为它使用默认情况下存在的属性上的哈希索引。
在SELECT WHERE部分使用UDF将导致执行扫描,这可能导致亚优化性能和更高的查询费用。
附:如果您想看到原生支持IN运算符,请去http://feedback.azure.com/forums/263030-documentdb/suggestions/6395357-in-operator投票。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接