2
я бегу следующие вопросы:Почему мой индекс Neo4j не применяется?
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
И дальше, по какой-то причине, индекс не используется, когда я пытаюсь принести Role
, что я только что создали. Можете ли вы объяснить, почему?
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
Я совершенно забыл о том, что вариант, спасибо! –
Этого не требуется вообще, когда у вас мало узлов, для планировщика запросов нет преимущества использования индекса или проверки метки. В 2.3 использовалось сканирование индекса, начиная с 701 узла для метки –