Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR proposes "streaming match generation" for
GrandCypher
. It depends on the changes in this corresponding PR aplbrain/grandiso-networkx#39.This change is designed to improve the performance of large openCypher queries. It employs a streaming match generation strategy to iteratively process each result.
For example, with this code snippet:
The current code base takes:
With this PR, it takes:
While this query on the surface seems ridiculous, it's not too different than:
For situations where you may just want to sample a few rows.
Here are a couple additional examples:
Current:
With this PR:
Current:
With this PR:
Current:
With this PR:
This change also adds an optional default limit that can be applied to all queries. It's worth noting that this only improves performance when a query has results. For queries without results, it still goes through the whole graph looking for results. I thought about adding a maximum iterations parameter but didn't include that with this PR.