RethinkDB:​​我可以有效地按日期之间的字段进行分组吗?

时间:2015-02-09 10:12:48

标签: rethinkdb

我想在两个时间戳之间按多个字段进行分组。 我试过像:

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

由于我的桌子很大,所以需要花费很多时间。我开始考虑在查询的“组”部分使用索引,然后我记得在同一个rql中使用多个索引是不可能的。

我可以有效地实现我的需求吗?

1 个答案:

答案 0 :(得分: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()