CRITICAL: Also disable EnsureCreatedAsync - it was bypassing migration tracking and creating schema
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
-- Performance Indexes for BaseItems Table
|
||||
-- These indexes improve performance of grouping queries in BaseItemRepository
|
||||
-- Run on PostgreSQL database
|
||||
\pset pager off
|
||||
|
||||
-- Connect to your Jellyfin database first:
|
||||
-- \c jellyfin_testdata
|
||||
|
||||
-- Index for PresentationUniqueKey grouping
|
||||
-- Used by queries that group by PresentationUniqueKey
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS "IX_BaseItems_PresentationUniqueKey"
|
||||
ON library."BaseItems" ("PresentationUniqueKey")
|
||||
WHERE "PresentationUniqueKey" IS NOT NULL;
|
||||
|
||||
-- Index for SeriesPresentationUniqueKey grouping
|
||||
-- Used by queries that group by SeriesPresentationUniqueKey
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS "IX_BaseItems_SeriesPresentationUniqueKey"
|
||||
ON library."BaseItems" ("SeriesPresentationUniqueKey")
|
||||
WHERE "SeriesPresentationUniqueKey" IS NOT NULL;
|
||||
|
||||
-- Composite index for queries using both keys
|
||||
-- Covers the case where both grouping keys are used together
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS "IX_BaseItems_PresentationKeys_Composite"
|
||||
ON library."BaseItems" ("PresentationUniqueKey", "SeriesPresentationUniqueKey", "Id")
|
||||
WHERE "PresentationUniqueKey" IS NOT NULL
|
||||
OR "SeriesPresentationUniqueKey" IS NOT NULL;
|
||||
|
||||
-- Index for Type + TopParentId (common filter combination)
|
||||
-- Improves WHERE clause filtering before grouping
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS "IX_BaseItems_Type_TopParentId"
|
||||
ON library."BaseItems" ("Type", "TopParentId")
|
||||
WHERE "TopParentId" IS NOT NULL;
|
||||
|
||||
-- Index for Type + TopParentId + PresentationUniqueKey (covering index)
|
||||
-- Covers the entire query pattern for TV Series queries
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS "IX_BaseItems_Series_Grouping"
|
||||
ON library."BaseItems" ("Type", "TopParentId", "PresentationUniqueKey", "Id")
|
||||
WHERE "Type" = 'MediaBrowser.Controller.Entities.TV.Series'
|
||||
AND "TopParentId" IS NOT NULL;
|
||||
|
||||
-- ANALYZE to update statistics after creating indexes
|
||||
ANALYZE library."BaseItems";
|
||||
|
||||
-- Verify indexes were created
|
||||
SELECT
|
||||
schemaname,
|
||||
tablename,
|
||||
indexname,
|
||||
indexdef
|
||||
FROM pg_indexes
|
||||
WHERE tablename = 'BaseItems'
|
||||
AND schemaname = 'library'
|
||||
ORDER BY indexname;
|
||||
|
||||
-- Check index sizes
|
||||
SELECT
|
||||
schemaname,
|
||||
tablename,
|
||||
indexname,
|
||||
pg_size_pretty(pg_relation_size(indexrelid)) AS index_size
|
||||
FROM pg_stat_user_indexes
|
||||
WHERE tablename = 'BaseItems'
|
||||
AND schemaname = 'library'
|
||||
ORDER BY pg_relation_size(indexrelid) DESC;
|
||||
Reference in New Issue
Block a user