Deluan
ad566d0cb6
perf(db): add covering index for title-sorted song listings
...
Deep pagination over songs sorted by title (WHERE missing/library_id,
ORDER BY order_title LIMIT/OFFSET - the shape Jellyfin clients use to
enumerate the library, and non-admin native/Subsonic song lists share)
walked media_file_order_title and fetched the table row for every
skipped entry just to evaluate the filter and the annotation/bookmark
join keys: offset+limit random reads, seconds per page on cold spinning
disks.
The new (missing, library_id, order_title, id) index makes the offset
skip fully index-resident: filter columns and the join key come from the
index, and only the emitted page touches table rows. Measured on a
96K-track library: offset 50000 drops from ~6.5s (poisoned stats) /
~100ms (good stats, warm) to 24ms, and cold deep pages on NAS hardware
from ~7s to ~0.5s.
2026-07-08 23:29:41 -04:00
..
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-07-02 09:46:57 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2025-06-28 18:43:11 -04:00
2025-06-28 19:00:13 -04:00
2025-06-30 17:11:54 -04:00
2025-07-18 18:41:12 -04:00
2025-11-06 14:41:09 -05:00
2025-11-24 23:18:05 -05:00
2025-12-06 11:07:18 -05:00
2026-01-05 19:05:11 -05:00
2026-01-14 19:22:48 -05:00
2026-01-18 17:42:42 -05:00
2026-06-18 09:58:43 -04:00
2026-02-28 10:59:13 -05:00
2026-03-01 14:07:18 -05:00
2026-03-02 11:39:59 -05:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-06-18 09:58:43 -04:00
2026-03-15 22:19:55 -04:00
2026-03-16 07:55:22 -04:00
2026-03-18 18:57:33 -04:00
2026-04-05 12:56:32 -04:00
2026-04-10 19:29:20 -04:00
2026-06-18 09:58:43 -04:00
2026-05-22 18:00:13 -03:00
2026-06-12 15:53:37 -04:00
2026-06-13 13:15:20 -04:00
2026-06-18 09:58:43 -04:00
2026-06-29 16:18:29 -04:00
2026-07-02 12:53:10 -04:00
2026-07-03 08:58:55 -04:00
2026-07-08 23:29:41 -04:00
2026-06-18 09:58:43 -04:00