我有一个庞大的Cosmos DB Collection。它有大约500K记录,我的RU范围是1000RU / s。我为自定义列创建了一个列索引。以下是Index JSON模式。
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/Column1/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
}
]
},
{
"path": "/Column2/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
}
]
}
],
"excludedPaths": [
{
"path":"/Column4/*"
}
]
}
下面是我的收藏结构。
{
"Column1": "Data1",
"Column2": "Data2",
"Column3": "Data3",
"Column4": "Data4"
}
当我触发以下选择查询(“ SELECT * FROM r where INDEX_OF(r.Column2,'Data2')>-1
”)时,它将返回正确的值。但是它批量执行,而不是从Indexes获取值。例如,查询应仅返回一条记录。但是它返回带有延续令牌的空白。我希望索引应该从现有索引中返回记录。我有什么想念的吗?
答案 0 :(得分:1)
此查询将不使用索引,因为无法从索引提供INDEX_OF。 CONTAINS系统功能(相当于INDEX_OF()> -1)也是如此。对于字符串系统函数,只有那些函数才能使用索引:
答案 1 :(得分:-2)
了解RU限制,您有1000 RU的平均值,在一秒钟之内不能读取超过1000个文档(文档大小为1kb)
您可能有两种解决方案:
您可以提高RUs设置。 (临时增加RU)
您可以继续通过延续标记查找下一组结果,并继续添加它,以便获得总数。(可能在sdk中)