2015-02-09 79 views
1

我想通过两个时间戳之间的多个字段进行分组。 我想是这样的:RethinkDB:​​我可以按日期有效地按字段进行分组吗?

r.table('my_table').between(r.time(2015, 1, 1, 'Z'), r.now(), {index: "timestamp"}).group("field_a", "field_b").count() 

,这需要大量的时间,因为我的表是相当大的。我开始考虑在查询的“组”部分使用索引,然后我记得在同一个rql中使用多个索引是不可能的。

我可以实现我需要的效率吗?

回答

1

您可以创建一个复合索引,然后有效地计算任何组的数量不计算所有的人:

r.table('my_table').indexCreate('compound', function(row) { 
    return [row('field_a'), row('field_b'), row('timestamp')]; 
}) 
r.table('my_table').between(
    [field_a_val, field_b_val, r.time(2015, 1, 1, 'Z')], 
    [field_a_val, field_b_val, r.now] 
).count()