Фильтр RethinkDB, затем различающийся по индексу

У меня большой стол, который быстро растет. Я хочу выполнить фильтрацию по полю, а затем получить отдельные значения по другому полю. Однако в RethinkDB это приводит к тому, что все записи читаются с диска, как я вижу с панели управления, что занимает слишком много времени. Мой запрос выглядит следующим образом:

r.db("mydb").table("mytable").filter({"AssetID": "a"}).pluck("StartedOn").distinct()

Исходный запрос был приведен ниже, но RethinkDB выдает ошибку, что это не таблица.

r.db("mydb").table("mytable").filter({"AssetID": "a"}).distinct({index:"StartedOn"})
e: Can only perform an indexed distinct on a TABLE in:

Оба поля StartedOn и AssetID индексируются. filter не использует индекс, поэтому я попытался использовать getAll, но все равно ошибка:

r.db("mydb").table("mytable").getAll("a", {index: 'AssetID'}).distinct({index:"StartedOn"})
e: Can only perform an indexed distinct on a TABLE in:

person Mustafa    schedule 03.08.2016    source источник


Ответы (1)


Вы не можете getAll по одному индексу, а затем использовать проиндексированный distinct по другому индексу. В этом случае я бы рекомендовал неиндексированный distinct после getAll.

person mlucy    schedule 05.08.2016