Fix performance issue with many duplicate ids #40
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.
If you had a sync rules query like this:
select '' as id from mytable
(all rows with the same id), the JOIN sync_local query would haveO(n^2)
operations. For 10k rows, this is 100m operations, which takes a very long time.While this should never be the case in a production app (you'd typically have a max of 2 or 3 duplicates), it could easily lead to a "hanging" app during development if you had a mistake in the query, making it difficult to debug.
The change in query here takes it back to
O(n)
. It does use an additional "TEMP B-TREE" for the DISTINCT/UNION step, but does not seem to negatively affect sync performance in my testing.