你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
查询超时和分页
表服务支持以下两种类型的查询服务:
对表服务的查询一次最多可返回 1000 项,执行时间最长为 5 秒。 如果结果集包含 1000 项以上,查询在 5 秒内没有完成,或者查询跨越分区边界,则响应中包含的标头将为开发人员提供要使用的继续标记,以便在结果集中的下一项处继续查询。 可以为 查询表 操作或查询 实体 操作返回延续标记标头。
请注意分配给计划和处理查询请求的总时间为 30 秒,包括查询执行的 5 秒。
查询可能不返回任何结果,但仍会返回继续标记头。
下表中显示了继续标记头。
继续标记头 | 说明 |
---|---|
x-ms-continuation-NextTableName |
此标头在 查询表 操作的上下文中返回。 如果返回的表的列表不完整,则继续标记头中包括列表中下一个表的名称哈希。 |
x-ms-continuation-NextPartitionKey |
此标头在 查询实体 操作的上下文中返回。 此标头包含在针对表的后续查询中返回的下一个分区键的哈希。 |
x-ms-continuation-NextRowKey |
此标头在 查询实体 操作的上下文中返回。 此标头包含在针对表的后续查询中返回的下一个行键的哈希。 请注意,在某些情况下, x-ms-continuation-NextRowKey 可能是 null 。 |
若要检索继续标记并执行后续查询以返回下一页结果,请首先检查继续标记的响应标头。 如果没有标头或标头的值为 null
,则没有要返回的其他实体。
注意
发出包含继续令牌的后续请求时,请务必在请求中传递原始 URI。 例如,如果已指定 、 $select
或 $top
查询选项作为原始请求的一$filter
部分,则需要在后续请求中包含该选项。 否则,后续请求可能会返回意外结果。
请注意,在这种情况下, $top
查询选项指定每页的最大结果数,而不是整个响应集中的最大结果数。
有关更多详细信息 ,请参阅查询表和实体 。
如果使用 Microsoft .NET 客户端库手动处理继续标记,请先将查询操作的结果强制转换为 QueryOperationResponse 对象。 然后,可以在 对象的 Headers 属性中访问延续令牌标头 QueryOperationResponse
。
在检索继续标记之后,请使用这些标记的值来构造查询以返回下一页结果。 查询请求 URI 可获取与通过响应返回的继续标记头相对应的参数:
NextTableName
NextPartitionKey
NextRowKey
注意
分配给请求以计划和处理查询的总时间为 30 秒,包括执行查询的 5 秒。
如果操作是插入、更新或删除操作,则尽管客户端返回了错误,但该操作可能在服务器上成功。 如果将客户端超时设置为小于 30 秒(30 秒是插入、更新或删除操作的最大超时),可能发生这种情况。
示例响应标头和后续请求
下面的代码示例说明针对返回继续头的名为 Customers 的表进行的实体查询的示例响应标头。 将返回 x-ms-continuation-NextPartitionKey
和 x-ms-continuation-NextRowKey
。
Date: Mon, 27 Jun 2016 20:11:08 GMT
Content-Type: application/json;charset=utf-8
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
Cache-Control: no-cache
x-ms-request-id: f9b2cd09-4dec-4570-b06d-4fa30179a58e
x-ms-version: 2015-12-11
x-ms-continuation-NextPartitionKey: 1!8!U21pdGg-
x-ms-continuation-NextRowKey: 1!8!QmVuOTk5
Content-Length: 880298
可以构造下一页数据的请求,如下面的 URI 所示:
http://myaccount.table.core.windows.net/Customers?NextPartitionKey=1!8!U21pdGg-&NextRowKey=1!12!QmVuMTg5OA--
另请参阅
寻址表服务资源
对表的操作
Operations on Entities(对实体的操作)