Files
xamxam/storage/migrations/006_add_composite_index.sql
Pontoporeia f37069720a schema: add composite index (is_published, year DESC) + fix stale migration 005
- Add idx_theses_pub_year composite index on theses(is_published, year DESC) to
  schema.sql; replaces the need for the query planner to pick between the two
  separate idx_theses_published / idx_theses_year indexes and sort with a temp
  B-tree. Every public query filters on is_published=1 and orders/filters by year,
  so this covering index eliminates the sort pass for those queries.

- Create storage/migrations/006_add_composite_index.sql and apply to both
  posterg.db and test.db.

- Fix storage/migrations/005_add_banner.sql: the view recreation in that file
  still referenced the pre-migration-001 table/column names (thesis_keywords,
  keywords.keyword). Updated to use thesis_tags / tags tg to match the canonical
  schema.sql. The live DB was unaffected (migration 001 ran before 005), but the
  file was misleading and would fail if ever re-run from scratch.
2026-03-27 13:48:22 +01:00

9 lines
466 B
SQL

-- Migration 006: Add composite covering index (is_published, year DESC) on theses
--
-- Every public-facing query filters on is_published = 1 AND orders/filters by year.
-- The existing separate idx_theses_published and idx_theses_year force the query
-- planner to pick one index and sort the other via a temp B-tree.
-- This single covering index eliminates the extra sort pass.
CREATE INDEX IF NOT EXISTS idx_theses_pub_year ON theses(is_published, year DESC);