2011-10-23 64 views
0

我正在使用Azure表存储。 假设我在我的表中有一个10000个记录的分区,并且我希望获得1000到1999的记录。并且下一次我想要获得4000到4999的记录等。 这样做的最快方法是什么? ?如何获取下一个1000条记录的最快方式

我到目前为止所能找到的两个选项,我不太喜欢: 1.运行一个查询,返回所有10,000条记录,并在获取所有10,000条记录时过滤掉我想要的内容。 2.运行一次返回1000条记录的查询,并使用连续令牌获取下一个1000条记录。

是否可以在不下载所有相应记录的情况下获得延续标记?如果我可以获得Continuation Token 1,将获得Continuation Token 1,并且获得记录2000至2999,那将是非常好的。

回答

0

理论上,您应该可以使用连续令牌,而不必下载前1000个recors的实际数据通过关闭第一次请求后的连接。我的意思是在TCP层面关闭它。并且在您读取所有数据之前。然后打开一个新的连接并在那里使用连续令牌。两个WebRequests不会这样做,因为HTTP实现可能会使用保持活动状态,这意味着即使您没有在代码中读取它,您的所有数据也将在后台读取。其实你可以配置你的HTTP请求不使用保持活着。

但是,另一种方法是自然地,如果你知道RowKey并且可以搜索那个,但是我认为你不知道每个1000个实体批次中哪个行键。

最后,我会问你为什么有这个问题摆在首位。 你的访问模式是什么。如果插入是常见的,并且获取这些记录非常罕见,我不打扰使它更有效率。如果这就像一个分页问题,​​我可能会获得第一个请求上的所有数据并将其缓存(在云中)。如果插入次数很少,但你需要经常运行这个查询,我会考虑使插入的数据每1000个实体有一个分区,并在插入实体时根据需要重新平衡(由于排序)。

相关问题