我有一个大约有500万行的天蓝色表,每个分区大约有10万行。 RowKey是一个可排序的时间戳。我需要能够获得插入表中的最新记录。
由于不支持Linq Last,Max,OrderBy等,如何有效获取最新的表记录?
答案 0 :(得分:12)
没有有效的方法可以做到这一点。但如果它是一个选项,请考虑翻转您的行键,以便最新的条目位于顶部(反向时间顺序)。检索顶部的 n 条目非常简单有效。
答案 1 :(得分:1)
您可以查询小于MaxDate的TimeStamp,并将结果限制为1。 Haven尚未测试它,但它应该可以工作。 取决于你的时间戳如何格式化。
答案 2 :(得分:0)
Table design patterns 部分专门解决了这个问题:
<块引用>背景和问题
一个常见的要求是能够检索最近创建的实体,例如员工提交的 10 个最近的费用报销单。表查询支持 $top 查询操作以返回集合中的前 n 个实体:没有等效的查询操作来返回集合中的最后 n 个实体。
(...)
以下 C# 代码示例展示了一种为从最近到最旧排序的 RowKey 创建合适的“倒计时”值的方法:
string invertedTicks = string.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);
(...)