我有一个由 userId 分区的实体(请求)。对于每个 userId,我都会有一个索引,对吧?
但是,我想通过 userId 快速搜索请求。有没有一种简单的方法可以做到这一点?或者我需要选择另一个字段来创建分区?
我有一个由 userId 分区的实体(请求)。对于每个 userId,我都会有一个索引,对吧?
但是,我想通过 userId 快速搜索请求。有没有一种简单的方法可以做到这一点?或者我需要选择另一个字段来创建分区?
如果你愿意,你可以划分两种方式。假设你这样做
public class Request {
@NoSqlId
@NoSqlIndexed
private String uniqueId;
@NoSqlIndexed
@NoSqlPartitionedBy
@NoSqlManyToOne
private User user;
@NoSqlIndexed
@NoSqlPartitionedBy
private LocalDate beginningOfEachMonth;
}
如果您愿意,您可以使用私有 String userId 而不是 User ;)。
现在,您可以使用月初作为键查询时间分区,只需执行查询,或者您可以使用用户作为键查询用户分区。
如果您按两件事进行分区,则您的命名查询将是...
query="PARTITIONS("user", :user) SELECT r FROM TABLE as r"
如果您仅按用户对表进行分区,则可以编写
query="PARTITIONS(:user) SELECT r FROM TABLE as r"
注意:有时您需要像我一样索引主键的唯一原因是对主键进行范围查询....对于 pk= 某个值的等于查询,您显然不需要索引,因为您可以通过主键本身查找。
院长