【发布时间】:2015-09-11 06:23:48
【问题描述】:
我有一个包含大量数据集 (~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 中执行此操作的正确方法是什么?
编辑:执行计划:
+--------------------------------------------+
| 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: ?
【问题讨论】:
-
请向我们展示查询的执行计划 - neo4j.com/docs/stable/how-do-i-profile-a-query.html