mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-08-30 23:00:18 -04:00
Refactor query from EXISTS to JOIN to avoid API timeouts with large libraries (#14557)
This commit is contained in:
parent
cd1d11366e
commit
47634e731a
@ -1115,13 +1115,18 @@ public sealed class BaseItemRepository
|
||||
IsSeries = filter.IsSeries
|
||||
});
|
||||
|
||||
var itemValuesQuery = context.ItemValues
|
||||
.Where(f => itemValueTypes.Contains(f.Type))
|
||||
.SelectMany(f => f.BaseItemsMap!, (f, w) => new { f, w })
|
||||
.Join(
|
||||
innerQueryFilter,
|
||||
fw => fw.w.ItemId,
|
||||
g => g.Id,
|
||||
(fw, g) => fw.f.CleanValue);
|
||||
|
||||
var innerQuery = PrepareItemQuery(context, filter)
|
||||
.Where(e => e.Type == returnType)
|
||||
.Where(e => context.ItemValues!
|
||||
.Where(f => itemValueTypes.Contains(f.Type))
|
||||
.Where(f => innerQueryFilter.Any(g => f.BaseItemsMap!.Any(w => w.ItemId == g.Id)))
|
||||
.Select(f => f.CleanValue)
|
||||
.Contains(e.CleanName));
|
||||
.Where(e => itemValuesQuery.Contains(e.CleanName));
|
||||
|
||||
var outerQueryFilter = new InternalItemsQuery(filter.User)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user