Переосмыслить запрос DB использовать вторичный индекс для диапазона значений меток времени Unix - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу запросить или отфильтровать определенные журналы доступа для отметок времени unix (начало и конец).Тем не менее, использование простого фильтра ниже всегда требует запроса.В этой таблице более 1 млн записей.

Кроме того, есть дополнительный индекс unixTimestamp, который я хочу использовать, чтобы он был намного быстрее.Моя проблема заключается в том, как использовать этот вторичный индекс unixTimestamp и выполнить запрос, как показано ниже?

Пересмотреть запрос:

r.db("my_db")
  .table("my_access_log")
  .filter(
    function(accessLog) {
      return accessLog("unixTimestamp").ge(1550660220)
        .and(accessLog("unixTimestamp").le(1550663580));
    }
  )

Пример данных (Доступжурнал):

{
    "access":  "Granted" ,
    "createdDateS":  "2019-02-19T18:17:01" ,
    "id":  "abc123" ,
    "sn":  "123413523523" ,
    "unixTimestamp": 1550563149 ,
    "user": dummyuser@dummies.com, »
}

Спасибо!

1 Ответ

0 голосов
/ 20 февраля 2019

Извините, что опубликовал ответ раньше, мне нужен был ответ как можно скорее, и я сам узнал ... Я просто отправляю его на тот случай, если у кого-то возникнет такая же проблема.

r.db("my_db")
  .table("my_access_log")
    .between(1550660220, 1550663580, {"index": "unixTimestamp"})
      .orderBy({index: r.desc('unixTimestamp')})

Это поиск с использованиемвторичный индекс unixTimestamp между метками времени Unix 1550660220 (start) и 1550663580 (end).Затем отсортируйте результаты в порядке убывания по полю unixTimestamp.

Если вам нужно отфильтровать по дате ... просто замените значения between(start, end).

С этим я смогчтобы немедленно сравнить записи, если я не буду использовать вторичный индекс, поскольку в моей таблице почти 2 млн записей.

Надеюсь, это поможет!

...