mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 02:48:38 -04:00
Cold archive/video browsing took 18-90 seconds on a Pi: file_group rows carry their indexed texts inline (SQLite has no out-of-line TOAST like Postgres), so any plan that reads file_group rows to filter or sort drags gigabytes of text pages through USB. - Browse archives with file_group as the outer table (CROSS JOIN) so SQLite walks the date index and probes archive's covering index; driving from archive probed every file_group row for the sort key. - Tie-break orders with fg.id instead of LOWER(fg.primary_path); the rowid is present in every index, the path expression forced full-row reads (and a full scan on the videos browse). - Add a (mimetype, effective_datetime) covering index so the videos mimetype filter + date order resolve index-only. - PRAGMA optimize after a global refresh; the planner had no sqlite_stat1 at all after the rebuild. Warm timings on 10.0.0.9 (124k archives / 24k videos): archive browse 0.4s -> 0.22s index-only, videos browse 0.38s -> 0.07s; cold I/O drops from ~124k random fat-page probes to a few MB of contiguous index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| archive | ||
| docs | ||
| flasher | ||
| inventory | ||
| map | ||
| videos | ||
| zim | ||
| __init__.py | ||