У меня есть база данных Neo4J с большим количеством наборов данных (~ 15M), где я хочу выполнить больше, чем поиск по одному из своих свойств. У меня есть соответствующее свойство, индексированное. Свойство - это значение поплавка.Neo4J поиск больше, чем по индексу
Когда я делаю точный матч, как MATCH (i:Label) WHERE i.property = $value RETURN count(i)
Я получаю результат за очень короткое время. Но когда я делаю тот же поиск с greater than
, то есть MATCH (i:Label) WHERE i.property > $value RETURN count(i)
, он просто берет навсегда. Каков правильный способ сделать это в Cypher?
Edit: План выполнения:
+--------------------------------------------+
| No data returned, and nothing was changed. |
+--------------------------------------------+
74 ms
Compiler CYPHER 2.2
Planner COST
EagerAggregation
|
+Filter
|
+NodeByLabelScan
+------------------+---------------+-------------+------------------------------+
| Operator | EstimatedRows | Identifiers | Other |
+------------------+---------------+-------------+------------------------------+
| EagerAggregation | 2064 | count(r) | |
| Filter | 4260557 | r | r.date > Subtract(Divide( |
| | | | TimestampFunction(),{ |
| | | | AUTOINT0}),Literal(86400)) |
| NodeByLabelScan | 14201858 | r | :Request |
+------------------+---------------+-------------+------------------------------+
Total database accesses: ?
Пожалуйста, покажите нам план выполнения запроса - HTTP://neo4j.com/docs/stable/how-do-i-profile-a-query.html – MicTech