我对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不会丢失记录,当我期望我的查询搜索所有这些?
如果我的问题不清楚,请告诉我。 谢谢
答案 0 :(得分:0)
是的,在这种情况下,每个人都需要一个单独的索引。