16

我有一个大约 500 万行的天蓝色表,每个分区大约 100k 行。RowKey 是一个可排序的时间戳。我需要能够获取插入到表中的最新记录。

由于不支持 Linq Last、Max、OrderBy 等,如何有效获取最新的表记录?

4

3 回答 3

15

没有有效的方法来做到这一点。但如果它是一个选项,请考虑翻转您的行键,以便最新条目位于顶部(反向时间顺序)。检索前n个条目既简单又有效。

于 2012-05-01T05:02:16.363 回答
2

您可以查询小于 MaxDate 的 TimeStamp 并将结果限制为 1。尚未对其进行测试,但它应该可以工作。取决于您的时间戳的格式。

于 2017-04-30T12:24:07.373 回答
1

Microsoft表设计模式的日志尾模式部分专门解决了这个问题:

背景和问题

一个常见的要求是能够检索最近创建的实体,例如员工提交的 10 个最近的费用报销。表查询支持 $top 查询操作来返回集合中的前 n 个实体:没有等效的查询操作来返回集合中的最后 n 个实体。

(...)

以下 C# 代码示例显示了一种为从最新到最旧排序的 RowKey 创建合适的“倒置刻度”值的方法:

string invertedTicks = string.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);

(...)

于 2021-06-17T07:26:13.250 回答