goon/app/api
jtrzupek 20a8dc8e27 perf(scenes): count over PK, not whole entity, in filtered list
The bounded count for filtered scene lists ran `SELECT count(*) FROM (SELECT
scenes.* ... LIMIT 1001)` because the base query selects the full Scene entity.
Counting over all columns made the planner pick a far worse plan via psycopg
bound params (~4s for has_playback) than the same logic over the PK (~30-400ms).
Count semantics are unchanged — we only need rows to exist — so count over
`base.with_only_columns(Scene.id)`.

Partial: this fixes the count leg. The main ordered fetch on filtered lists
(has_playback / tags) can still pick a gather-all-then-sort plan under bound
params (fast with literal binds, slow parameterized) — tracked separately.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 11:14:38 +02:00
..
__init__.py Initial commit 2026-05-20 10:10:22 +02:00
admin.py Initial commit 2026-05-20 10:10:22 +02:00
admin_html.py Initial commit 2026-05-20 10:10:22 +02:00
blacklist.py Initial commit 2026-05-20 10:10:22 +02:00
bug_reports.py Initial commit 2026-05-20 10:10:22 +02:00
expo_updates.py session work: bug-report fixes + WIP cleanup 2026-05-25 22:02:52 +02:00
favorites.py perf(taxonomy): denormalize scene_count for tags/performers/studios 2026-05-31 17:53:48 +02:00
movies.py feat(movies): watched/continue-watching tracking end-to-end 2026-05-28 23:24:06 +02:00
playback.py session work: bug-report fixes + WIP cleanup 2026-05-25 22:02:52 +02:00
scene_favorites.py Initial commit 2026-05-20 10:10:22 +02:00
scenes.py perf(scenes): count over PK, not whole entity, in filtered list 2026-06-02 11:14:38 +02:00
schemas.py perf(scenes): bounded count + has_more for filtered scene lists 2026-05-31 19:24:26 +02:00
seo.py feat(seo): public HTML SEO router + templates; add CLAUDE.md; ignore .nimbalyst 2026-05-31 16:29:59 +02:00
sources.py session work: bug-report fixes + WIP cleanup 2026-05-25 22:02:52 +02:00
stream_proxy.py session work: bug-report fixes + WIP cleanup 2026-05-25 22:02:52 +02:00
taxonomies.py perf(taxonomy): denormalize scene_count for tags/performers/studios 2026-05-31 17:53:48 +02:00
watch.py feat(movies): watched/continue-watching tracking end-to-end 2026-05-28 23:24:06 +02:00