如何索引分区字段?

时间:2012-10-17 14:32:45

标签: playorm

我有一个由userId分区的实体(Request)。对于每个userId,我都会有一个索引,对吗?

但是,我想通过userId快速搜索请求。有一个简单的方法吗?或者我需要选择另一个字段来创建分区?

1 个答案:

答案 0 :(得分:1)

如果您愿意,可以分两种方式。假设你这样做

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 =某个值,您显然不需要索引因为你可以通过主键本身查找。

迪安