perf(locations): use ST_Distance_Sphere with spatial index for lookups #94
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.
Summary
Replace the Haversine full-table scan with a two-phase spatial query that leverages the existing SPATIAL INDEX:
MBRContains- uses the spatial index to quickly narrow down candidatesST_Distance_Sphere- calculates exact distance only for candidates in the bounding boxWhy this matters
The old query scanned every row and calculated Haversine distance for each:
The new query uses the spatial index first, then calculates distance only for nearby candidates:
Performance impact
The spatial index (
idx_spatial_coordinates) was created in migration 004 but wasn't being used.Test plan
EXPLAIN(optional)🤖 Generated with Claude Code