Skip to content

⚡ Bolt: Replace backend DB LEFT JOINs with Scalar Subqueries#22

Open
jspann21 wants to merge 1 commit into
mainfrom
perf-subqueries-in-sqlite-1445289034428803278
Open

⚡ Bolt: Replace backend DB LEFT JOINs with Scalar Subqueries#22
jspann21 wants to merge 1 commit into
mainfrom
perf-subqueries-in-sqlite-1445289034428803278

Conversation

@jspann21
Copy link
Copy Markdown
Owner

@jspann21 jspann21 commented Jun 6, 2026

💡 What: Replaced LEFT JOINs paired with GROUP BY b.id patterns in get_library_books and get_hidden_books inside src-tauri/src/library/db.rs with embedded scalar subqueries.

🎯 Why: The original queries suffered from a significant N+1 Cartesian product issue, where joining arrays of tags and formats would multiply result rows exponentially before collapsing them using GROUP BY. SQLite evaluates these Cartesian products in-memory which acts as a major performance bottleneck for larger libraries.

📊 Impact: Significantly speeds up sorting, querying, and page load fetching since SQLite won't perform massive virtual joins to determine file sets or tags for single entries. We eliminate expensive group by allocations.

🔬 Measurement: Compile the backend (cargo test). Run pnpm dev with a large library (1,000+ books with multiple formats and tags). Measure the backend fetch times when scrolling or filtering the grid list. Wait times should be drastically reduced compared to main branch behavior.


PR created automatically by Jules for task 1445289034428803278 started by @jspann21

Co-authored-by: jspann21 <179991454+jspann21@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant