我有一个COSMOSDB集合(SQLAPI),我用表示CIDR网络范围的文档填充了它。
每个文件的相关部分是
{
"Network": "31.216.102.0/23",
"IPRangeStart": 534275584,
"IPRangeEnd": 534276095,
每个CIDR块的起始和结束IP地址都转换为
uint
存储在HTE中
RangeStart
和
RangeEnd
属性。
当我运行一个查询来按它的起始范围搜索一个特定的条目时,它会像预期的那样工作并且非常快。
SELECT top 1 * FROM c WHERE c.IPRangeStart = 532361216
Request Charge: 3.02 RUs
但是,当我使用<=/=>运算符引入中间查询时,它会变得非常昂贵。
SELECT top 1 * FROM c WHERE c.IPRangeStart <= 534275590 AND c.IPRangeEnd >= 534275590
Request Change: 1647.99 RUs
我已经查看了集合上的索引设置
我还为所讨论的两个特定属性在集合中应用了另外两个整数范围索引。尽管似乎没有办法检查这些索引在后台应用/创建的进度。
有什么明显的东西我可能不见了吗?
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Hash",
"dataType": "String",
"precision": 3
}
]
},
{
"path": "/IPRangeStart/?",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Hash",
"dataType": "String",
"precision": 3
}
]
},
{
"path": "/IPRangEnd/?",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Hash",
"dataType": "String",
"precision": 3
}
]
}
],
"excludedPaths": []
}