在 Azure table 上使用 AND 执行查询非常慢
Query execution using AND on Azure table is very slow
如果我试试这个:
( RowKey ge '1606780800000' )
我在一秒钟内得到结果。
但是如果我尝试使用 AND
,仍然像这样使用 RowKey:
( RowKey ge '1606780800000' and RowKey le '1606784400000' )
它一直在加载。
我知道with OR
it will perform a full scan,但是AND
也是这样吗?有什么办法解决这个问题吗?
如果只使用 2 RowKeys with AND
运算符(没有 PartitionKey),它将进行 table 扫描。
这里有一些建议:
1.You如果可能的话可以用range query。然后你可以像$filter=PartitionKey eq 'xxx' and RowKey ge '1606780800000' and RowKey le '1606784400000'
一样指定过滤器。但是如果比PartitionKeys多一个,就需要写多个query。
2.If 您仍在使用此查询:( RowKey ge '1606780800000' and RowKey le '1606784400000' )
。此时如果requested items
超过1000条,查询一次最多只能return1000条。所以在这种情况下,您应该在查询中使用 x-ms-continuation-NextPartitionKey
和 x-ms-continuation-NextRowKey
。有关详细信息,请参阅 this doc。
如果我试试这个:
( RowKey ge '1606780800000' )
我在一秒钟内得到结果。
但是如果我尝试使用 AND
,仍然像这样使用 RowKey:
( RowKey ge '1606780800000' and RowKey le '1606784400000' )
它一直在加载。
我知道with OR
it will perform a full scan,但是AND
也是这样吗?有什么办法解决这个问题吗?
如果只使用 2 RowKeys with AND
运算符(没有 PartitionKey),它将进行 table 扫描。
这里有一些建议:
1.You如果可能的话可以用range query。然后你可以像$filter=PartitionKey eq 'xxx' and RowKey ge '1606780800000' and RowKey le '1606784400000'
一样指定过滤器。但是如果比PartitionKeys多一个,就需要写多个query。
2.If 您仍在使用此查询:( RowKey ge '1606780800000' and RowKey le '1606784400000' )
。此时如果requested items
超过1000条,查询一次最多只能return1000条。所以在这种情况下,您应该在查询中使用 x-ms-continuation-NextPartitionKey
和 x-ms-continuation-NextRowKey
。有关详细信息,请参阅 this doc。