我在某处读到查询 RowKey 和 PartitionKey 以外的数据将导致全表扫描。我希望正确理解整个查询过程,但我对整个考验感到有点空虚。
假设我在单个存储中有几百万行数据对象。我将它按 PartitionKey 划分为数据子集。假设我创建了一个查询
var query = new TableQuery<MyEntity>()
.Where(TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, pPartition),
TableOperators.And,
TableQuery.GenerateFilterCondition("Timestamp", QueryComparisons.GreaterThanOrEqual, startTime));
这个查询是如何在表端构造的?我是否可以控制首先应用哪个过滤器 - 是应用它们的顺序吗,所以在这种情况下,我首先会得到一个子集 say.. 100k 行,然后应用时间戳过滤器。
我开始考虑这样做的原因是我想同时使用 PartitionKey 和 RowKey 来存储不同的数据以进行分离,但我还需要能够尽可能高效地按日期查询。该系统将具有相当繁重的工作负载,有很多这样的请求,因此及时工作很重要。