我可以查询Windows Azure表存储行中的属性吗?

时间:2011-05-08 17:21:15

标签: azure azure-storage azure-table-storage

很抱歉,如果这听起来像是一个相当愚蠢的问题,但我想对来自Windows Azure表的数据进行“选择”。我尝试了以下内容并且有效:

from question in _statusTable.GetAll()
                       where status.RowKey.StartsWith(name)

然后我尝试了

from question in _statusTable.GetAll()
                       where status.Description.StartsWith(name)

这个没有给我什么。任何人都可以向我解释我是否或如何查询不属于RowKey或PartitionKey的行。

2 个答案:

答案 0 :(得分:3)

您可以查询任何属性,但支持的查询类型是有限的 - 例如StartsWith不受支持。此外,如果您没有查询PartitionKey和RowKey,那么需要了解一些非常重要的性能问题 - 您始终需要了解ContinuationToken - 几乎所有查询结果都可以包含这些。

您可以通过查看REST API来查看支持的各种查询:http://msdn.microsoft.com/en-us/library/dd894031.aspx - 它非常有限(但结果很快):

  • 等于
  • GREATERTHAN
  • GreaterThanOrEqual
  • 每种不超过
  • LessThanOrEqual
  • NotEqual

如果您需要做更多,那么:

  • 您可以通过StartsWith("Fred")
  • 模仿GreaterThanOrEqualTo("Fred") and LessThan("Free")之类的内容
  • 或客户端过滤将起作用 - 但这意味着从存储中拉回所有行 - 这可能是大量数据,并且可能在计算上和事务上都很昂贵!

答案 1 :(得分:0)

GetAll()做什么? WA表不支持StartsWith,所以我假设GetAll将所有数据都拉到本地,因此您的查询是在内存中的对象上完成的。如果是这样,这与Windows Azure无关,所以我要看一下你的数据是否符合预期。