Ik probeer het aantal rijen te tellen dat Neo4j zal retourneren, maar de count (of de query) is erg traag.
Versie 1 (70 sec):
Versie 2 (68 sec.):
Gebruikmakend van Neo4j 4.4 met ongeveer 800000 orders en ongeveer 17000000 orderregels. Als resultaat komt hier 4269011 rijen uit. Is er een efficiëntere manier om de rijen te tellen?
Dit zijn de indexes:
Hier is de EXPLAIN:
Versie 1 (70 sec):
code:
1
2
3
4
5
| MATCH (person:Person)-[:HAS_ORDER]->(order:Order) WHERE order.timestamp >= 1632434400 AND size((order)<-[:HAS_ORDER]-(:OrderLine)-[:HAS_PRODUCT]->(:Product)) <= 20 WITH order MATCH (order)<-[:HAS_ORDER]-(:OrderLine)-[:HAS_PRODUCT]->(product:Product) RETURN COUNT(product); |
Versie 2 (68 sec.):
code:
1
2
3
4
| MATCH (person:Person)-[:HAS_ORDER]->(order:Order) WITH size((order)<-[:HAS_ORDER]-(:OrderLine)-[:HAS_PRODUCT]->(:Product)) AS amount WHERE order.timestamp >= 1632434400 AND amount <= 20 RETURN SUM(amount) |
Gebruikmakend van Neo4j 4.4 met ongeveer 800000 orders en ongeveer 17000000 orderregels. Als resultaat komt hier 4269011 rijen uit. Is er een efficiëntere manier om de rijen te tellen?

Dit zijn de indexes:
code:
1
2
3
4
| CREATE INDEX idx_order_torder_id FOR (n:Order) ON (n.order_id); CREATE INDEX idx_order_timestamp FOR (n:Order) ON (n.timestamp); CREATE INDEX idx_person_person_id FOR (n:Person) ON (n.person_id); CREATE INDEX idx_product_product_id FOR (n:Product) ON (n.product_id); |
Hier is de EXPLAIN:
[Voor 30% gewijzigd door ZeroXT op 24-12-2021 17:53]