【问题标题】:Does using "greater than" on a partition key on an azure table storage result in a full table scan?在 Azure 表存储上的分区键上使用“大于”会导致全表扫描吗?
【发布时间】:2020-09-22 14:41:43
【问题描述】:

我目前使用的表存储可能很快就会包含数十亿个实体。像 PartitionKey gt 'KnownExclusiveStartPartition' 这样的查询会导致表扫描,还是 Azure 表存储可以使用索引快速找到结果?

接下来的问题是,这种行为(哪些查询会导致表扫描以及哪种查询是有效的)是否记录在某处?我知道使用精确的分区(甚至分区+行)值进行查询是最好的选择,但有关实体如何在内部建立索引的详细信息会很好。

下面的表格(或类似的东西)是否记录在某处:
Big O 只是我猜想找到前 1 个值需要什么

  • PartitionKey eq 'X' and RowKey eq 'Y' -> O(1)
  • PartitionKey eq 'X' -> O(1) ?
  • PartitionKey gt 'X' -> O(1) ?
  • PartitionKey lt 'X' -> ?
  • PartitionKey gt 'X' and RowKey lt 'Y' -> ?

【问题讨论】:

  • 请查看下面的答案,如果您有更多疑虑,请告诉我。

标签: azure-table-storage


【解决方案1】:

如果您在查询中指定 PartitionKey,那么无论您使用的是 gteq 运算符,这至少是一个 partition scan(这取决于查询中如何使用 RowKey)PartitionKey .

除非没有指定PartitionKey,否则就是表扫描。

对于“以下表格(或类似内容)是否记录在某处”,没有文档可以反映这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2021-11-26
    相关资源
    最近更新 更多