问题:我想获得所有具有最高范围键的物品.

示例:

id version
test1 3
test1 4
test2 2
test2 3

我期望来自Query:

id version
test1 4
test2 3

我的桌子是这样的:

id string -> hash key 
version number -> range key

我正在使用GUREGU,我正在扫描所有结果以获得最高版本号.

var results []map[string]interface{}
err := d.table.Scan().All(&results)

查找具有最高排序关键字的项目的最佳实践是什么?

推荐答案

如果您稍微更改了数据模型,其中您有一条记录,如下图中的V0,那么您可以在最新值上建立sparsely的索引,从而以高效的方式轻松获取所有项目的最新版本.

另一种 Select 是扫描然后查询,这是非常低效的.因此,如果它是一个频繁的查找模式,那么索引是最好的.

data

Go相关问答推荐

Go汇编器命名为Constants

golang父进程的副本无法进行https/tls调用并获得tls:未能验证证书""

使用Gorm创建自定义连接表

Go:嵌入类型不能是类型参数""

将Go程序导出到WASM—构建约束排除所有Go文件

如何在另一个文件夹中使用Delve运行二进制文件?

Golang应用程序:所请求的资源上不存在HTTP-Control-Allow-Origin标头

golang 的持久隐蔽服务

如何给杜松子wine 的路由加上一个名字,比如Laravel ?

包裹网.Conn导致挂起读取

如何在 `hashicorp / terraform-exec` 中将 `ApplyConfig` 传递给 `tf.Apply()`?

如何使用 Go 代理状态为 OK 的预检请求?

Dockerfile 问题 - 为什么找不到二进制 dlv - 没有这样的文件或目录

如何在 Golang 中使用具有相同名称或特定关键字的行或列重新排列/排序 CSV

如何在Golang中的差异函数中杀死命令Exec

关系不存在 GORM

为什么 go-cmp Equal() 说 struct 不是完全相等的,即使所有字段都非常相等?

(如何)我可以基于接口抽象地实现Stringer吗?

有没有办法在golang中映射一组对象?

comparable和any有什么区别?