Add optimized indexes for UserData and latest items queries

This commit is contained in:
Shadowghost
2026-01-17 15:43:51 +01:00
parent c350fd0f40
commit 22d8a00716
4 changed files with 1832 additions and 2 deletions

View File

@@ -17,6 +17,7 @@ public class UserDataConfiguration : IEntityTypeConfiguration<UserData>
builder.HasIndex(d => new { d.ItemId, d.UserId, d.PlaybackPositionTicks });
builder.HasIndex(d => new { d.ItemId, d.UserId, d.IsFavorite });
builder.HasIndex(d => new { d.ItemId, d.UserId, d.LastPlayedDate });
builder.HasIndex(d => new { d.UserId, d.ItemId, d.LastPlayedDate });
builder.HasOne(e => e.Item).WithMany(e => e.UserData);
}
}

View File

@@ -0,0 +1,36 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Jellyfin.Database.Providers.Sqlite.Migrations
{
/// <inheritdoc />
public partial class AddLatestItemsDateCreatedIndexes : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_UserData_UserId",
table: "UserData");
migrationBuilder.CreateIndex(
name: "IX_UserData_UserId_ItemId_LastPlayedDate",
table: "UserData",
columns: new[] { "UserId", "ItemId", "LastPlayedDate" });
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_UserData_UserId_ItemId_LastPlayedDate",
table: "UserData");
migrationBuilder.CreateIndex(
name: "IX_UserData_UserId",
table: "UserData",
column: "UserId");
}
}
}

View File

@@ -1436,8 +1436,6 @@ namespace Jellyfin.Server.Implementations.Migrations
b.HasKey("ItemId", "UserId", "CustomDataKey");
b.HasIndex("UserId");
b.HasIndex("ItemId", "UserId", "IsFavorite");
b.HasIndex("ItemId", "UserId", "LastPlayedDate");
@@ -1446,6 +1444,8 @@ namespace Jellyfin.Server.Implementations.Migrations
b.HasIndex("ItemId", "UserId", "Played");
b.HasIndex("UserId", "ItemId", "LastPlayedDate");
b.ToTable("UserData");
b.HasAnnotation("Sqlite:UseSqlReturningClause", false);