在Azure表上使用AND执行查询的速度非常慢



如果我尝试这个:

( RowKey ge '1606780800000' )

我一秒钟就能得到结果。

但如果我尝试使用AND,仍然使用这样的RowKey:

( RowKey ge '1606780800000' and RowKey le '1606784400000' )

它一直在加载。

我知道OR会执行完全扫描,但AND的情况相同吗?有什么办法绕过这个吗?

如果只使用2 RowKeys with AND运算符(不带PartitionKey(,它将执行表扫描。

以下是一些建议:

1.如果可能,您可以使用范围查询。然后可以指定类似$filter=PartitionKey eq 'xxx' and RowKey ge '1606780800000' and RowKey le '1606784400000'的筛选器。但是,如果有一个以上的PartitionKeys,则需要编写多个查询。

2.如果您仍然使用此查询:( RowKey ge '1606780800000' and RowKey le '1606784400000' )。此时,如果requested items超过1000,则查询一次最多只能返回1000个项目。因此,在这种情况下,您应该在查询中使用x-ms-continuation-NextPartitionKeyx-ms-continuation-NextRowKey。有关更多详细信息,请参阅此文档。

最新更新