Мне нужно отфильтровать посетителей по датам, поэтому я использую этот запрос
match (v:Visitor)
where datetime('2020-01-01T09:00:00.000000+13:00') <= v.at < datetime('2020-01-01T19:00:00.000000+13:00')
return count(v)
Это довольно просто и понятно.
Теперь у меня есть еще одно требование, мне нужно отфильтровать посетителей по диапазон дат, что-то вроде:
match (v:Visitor)
where
datetime('2020-01-01T09:00:00.000000+13:00') <= v.at < datetime('2020-01-01T19:00:00.000000+13:00')
or
datetime('2020-01-02T09:00:00.000000+13:00') <= v.at < datetime('2020-01-02T19:00:00.000000+13:00')
or
datetime('2020-01-03T09:00:00.000000+13:00') <= v.at < datetime('2020-01-03T19:00:00.000000+13:00')
return count(v)
Несмотря на то, что это работает, это очень медленно по сравнению с выполнением 3 разных запросов с разными диапазонами.
Есть ли способ сделать что-то вроде выше, но без ущерба для производительности?
ПРИМЕЧАНИЕ. У меня есть индекс на: Visitor (at)