Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing 为什么不是';我的Neo4j指数不适用吗?_Indexing_Neo4j_Cypher - Fatal编程技术网

Indexing 为什么不是';我的Neo4j指数不适用吗?

Indexing 为什么不是';我的Neo4j指数不适用吗?,indexing,neo4j,cypher,Indexing,Neo4j,Cypher,我运行以下查询: CREATE INDEX ON :Role(id) +-------------------+ | No data returned. | +-------------------+ Indexes added: 1 CREATE (:Role {id:'abc'}) +-------------------+ | No data returned. | +-------------------+ Nodes created: 1 Properties set: 1 Lab

我运行以下查询:

CREATE INDEX ON :Role(id)
+-------------------+
| No data returned. |
+-------------------+
Indexes added: 1


CREATE (:Role {id:'abc'})
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 1
Properties set: 1
Labels added: 1
接下来,由于某种原因,当我试图获取刚刚创建的
角色时,没有使用索引。你能解释一下原因吗

neo4j-sh (?)$ PROFILE MATCH (role:Role {id:'abc'})
> RETURN role.id;
+---------+
| role.id |
+---------+
| "abc"   |
+---------+
1 row
7 ms

Compiler CYPHER 2.2

Planner COST

Projection
  |
  +Filter
    |
    +NodeByLabelScan

+-----------------+---------------+------+--------+---------------+----------------------------+
|        Operator | EstimatedRows | Rows | DbHits |   Identifiers |                      Other |
+-----------------+---------------+------+--------+---------------+----------------------------+
|      Projection |             1 |    1 |      1 | role, role.id |                    role.id |
|          Filter |             1 |    1 |      5 |          role | role.id == {  AUTOSTRING0} |
| NodeByLabelScan |             6 |    5 |      6 |          role |                      :Role |
+-----------------+---------------+------+--------+---------------+----------------------------+

Total database accesses: 12

你忘记使用索引了

试试这个:

MATCH (role:Role)
USING INDEX role:Role(id)
WHERE role.id='abc'
RETURN role.id

Projection
  |
  +Expand(All)
    |
    +NodeIndexSeek
Total database accesses: 4

这根本不需要,当节点很少时,查询计划器使用索引或标签扫描没有任何优势。在2.3中,从701个节点开始对标签进行索引扫描