Как быстро получить N последних записей из rethinkdb?

Допустим, вы хотите получить 3 первые записи из rethinkdb. Это легко сделать с помощью:

objects = r.db("db").getAll(val, {index:"index"}).limit(N)

Но для того, чтобы получить последние N записей, вы должны получить счетчик, количество объектов, а затем сделать срез следующим образом:

count = r.db("db").getAll(val, {index:"index"}).count(N)
objects = r.db("db").getAll(val, {index:"index"}).slice(count - N, count)

Существует огромная разница во времени:

Первый с.Limit в golang занимает: 63.28276ms

Второй с.Slice в Голанге занимает: 1.028439202s

дела orderBy некоторая временная метка делает все еще медленнее.

Так что, как вы видите, это просто безумие с точки зрения скорости. Этот запрос выполнен по 26 000 документов в базе данных. Мне нужна идея, как это решить.

1 ответ

Итак, я перепробовал много вещей и получая последний N записи будут медленными, поэтому я подхожу к проблеме по-другому. Я сделал некоторый сценарий, который ставит последний N записывает каждый 20secondв file/redis а затем я быстро читаю эти записи из веб-приложения Go.

Другие вопросы по тегам