Просмотр исходного кода

Backport pull request #15666 from jellyfin/release-10.11.z

Fix unnecessary database JOINs in ApplyNavigations

Original-merge: 4cdd8c8233cc8e2b4ced9be5b7ddbd48f190a3b9

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
andrewrabert 20 часов назад
Родитель
Сommit
8461268837
1 измененных файлов с 19 добавлено и 4 удалено
  1. 19 4
      Jellyfin.Server.Implementations/Item/BaseItemRepository.cs

+ 19 - 4
Jellyfin.Server.Implementations/Item/BaseItemRepository.cs

@@ -410,10 +410,25 @@ public sealed class BaseItemRepository
 
     private static IQueryable<BaseItemEntity> ApplyNavigations(IQueryable<BaseItemEntity> dbQuery, InternalItemsQuery filter)
     {
-        dbQuery = dbQuery.Include(e => e.TrailerTypes)
-           .Include(e => e.Provider)
-           .Include(e => e.LockedFields)
-           .Include(e => e.UserData);
+        if (filter.TrailerTypes.Length > 0 || filter.IncludeItemTypes.Contains(BaseItemKind.Trailer))
+        {
+            dbQuery = dbQuery.Include(e => e.TrailerTypes);
+        }
+
+        if (filter.DtoOptions.ContainsField(ItemFields.ProviderIds))
+        {
+            dbQuery = dbQuery.Include(e => e.Provider);
+        }
+
+        if (filter.DtoOptions.ContainsField(ItemFields.Settings))
+        {
+            dbQuery = dbQuery.Include(e => e.LockedFields);
+        }
+
+        if (filter.DtoOptions.EnableUserData)
+        {
+            dbQuery = dbQuery.Include(e => e.UserData);
+        }
 
         if (filter.DtoOptions.EnableImages)
         {