我可以在RethinkDB中的同一个表上创建多个二级索引,并在不同的查询中使用它们吗?

时间:2016-07-13 07:04:52

标签: indexing rethinkdb database nosql

我对rethinkdb文档感到困惑。

我有一张表可能包含数百万条目。 以下是我的所有查询的样子(伪代码):

- all where column1 == ''
      - filter where column2 == '' AND column3 == '' orderBy dateColumn7.field1

- all where column1 == ''
      - filter where column2 == '' AND column4 == '' orderBy dateColumn7.field2

- all where column1 == ''
      - filter where column5 == '' AND column6 == '' orderBy dateColumn7.field3

所以我的查询都是按column1搜索的,然后他们有一些特定的过滤器,具体取决于我调用的查询,orderBy,skip和限制分页等。

问题:我在rethinkdb文档中读到.filter()不能与二级索引一起使用,而且orderBy限制为100k条目,所以现在我必须放弃使用.filter(),并使用getAll执行所有查询。

问题:我现在应该为每个查询创建一个索引,这是推荐的做法吗? E.g:

indexCreate('ixQuery1', [column1, column2, column3, dateColumn7(field1)]
indexCreate('ixQuery2', [column1, column2, column4, dateColumn7(field2)]
indexCreate('ixQuery3', [column1, column5, column6, dateColumn7(field3)]

...并使用它们各自的查询?如果我想搜索大表,这是最好的做法吗? 或者我可以以某种方式继续使用过滤器和orderBy()和STILL不会丢失记录,当我期望我的查询搜索所有这些?

如果我的问题不清楚,请告诉我。 谢谢

1 个答案:

答案 0 :(得分:0)

是的,在这种情况下,每个人都需要一个单独的索引。