Skip to content

Instantly share code, notes, and snippets.

@marcojahn
Created August 20, 2014 12:06
Show Gist options
  • Save marcojahn/a63568ce484a0205492b to your computer and use it in GitHub Desktop.
Save marcojahn/a63568ce484a0205492b to your computer and use it in GitHub Desktop.
Neo4J profiling 001
neo4j-sh (?)$ profile MATCH (employee:Employee{id:1})
> WITH employee
> MATCH (employee)-[ref_skilllevel:HAS_SKILL]->(skill:Skill)-[ref_skillgroup:BELONGS_TO]->(skillgroup:Skillgroup)
> WITH employee, {skillgroup: skillgroup.skillgroup, skill: collect({skill: skill.skill, level: ref_skilllevel.level})} as skillgroup
> WITH employee, collect(skillgroup) as skillgroup
> MATCH (employee)-[:EXPERT_OF]->(expert:Skill)
> RETURN employee.firstname, skillgroup, collect(expert.skill) as expert;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| employee.firstname | skillgroup | expert |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "Marco" | [{skillgroup -> "Design und Programmierung", skill -> [{skill -> "Java", level -> 50},{skill -> "JavaScript", level -> 100}]},{skillgroup -> "Datenbanken und Datentechnologien", skill -> [{skill -> "MongoDB", level -> 50}]}] | ["MongoDB","JavaScript"] |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row
ColumnFilter(0)
|
+EagerAggregation(0)
|
+Extract(0)
|
+Filter(0)
|
+SimplePatternMatcher(0)
|
+ColumnFilter(1)
|
+EagerAggregation(1)
|
+ColumnFilter(2)
|
+Extract(1)
|
+ColumnFilter(3)
|
+EagerAggregation(2)
|
+Extract(2)
|
+Filter(1)
|
+SimplePatternMatcher(1)
|
+SchemaIndex
+-------------------------+------+--------+-------------------------------------------------------------+-------------------------------------------------------------------+
| Operator | Rows | DbHits | Identifiers | Other |
+-------------------------+------+--------+-------------------------------------------------------------+-------------------------------------------------------------------+
| ColumnFilter(0) | 1 | 0 | | keep columns employee.firstname, skillgroup, expert |
| EagerAggregation(0) | 1 | 4 | | employee.firstname, skillgroup |
| Extract(0) | 2 | 4 | | employee.firstname |
| Filter(0) | 2 | 2 | | hasLabel(expert:Skill(1)) |
| SimplePatternMatcher(0) | 2 | 2 | employee, expert, UNNAMED355 | |
| ColumnFilter(1) | 1 | 0 | | keep columns employee, skillgroup |
| EagerAggregation(1) | 1 | 0 | | employee |
| ColumnFilter(2) | 2 | 0 | | keep columns employee, skillgroup |
| Extract(1) | 2 | 0 | | skillgroup |
| ColumnFilter(3) | 2 | 0 | | keep columns employee, AGGREGATION197, AGGREGATION216 |
| EagerAggregation(2) | 2 | 12 | | employee, AGGREGATION197 |
| Extract(2) | 3 | 6 | | AGGREGATION197 |
| Filter(1) | 3 | 6 | | (hasLabel(skill:Skill(1)) AND hasLabel(skillgroup:Skillgroup(4))) |
| SimplePatternMatcher(1) | 3 | 6 | skill, ref_skillgroup, ref_skilllevel, employee, skillgroup | |
| SchemaIndex | 1 | 2 | employee, employee | { AUTOINT0}; :Employee(id) |
+-------------------------+------+--------+-------------------------------------------------------------+-------------------------------------------------------------------+
Total database accesses: 44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment