mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-01-23 23:20:51 +01:00
Optimize artist query (#15087)
This commit is contained in:
parent
175ee12bbc
commit
a5bc4524d8
2 changed files with 4 additions and 3 deletions
|
|
@ -2046,7 +2046,7 @@ public sealed class BaseItemRepository
|
|||
|
||||
if (filter.ExcludeArtistIds.Length > 0)
|
||||
{
|
||||
baseQuery = baseQuery.WhereReferencedItem(context, ItemValueType.Artist, filter.ExcludeArtistIds, true);
|
||||
baseQuery = baseQuery.WhereReferencedItemMultipleTypes(context, [ItemValueType.Artist, ItemValueType.AlbumArtist], filter.ExcludeArtistIds, true);
|
||||
}
|
||||
|
||||
if (filter.GenreIds.Count > 0)
|
||||
|
|
|
|||
|
|
@ -70,13 +70,14 @@ public static class JellyfinQueryHelperExtensions
|
|||
bool invert = false)
|
||||
{
|
||||
var itemFilter = OneOrManyExpressionBuilder<BaseItemEntity, Guid>(referenceIds, f => f.Id);
|
||||
var typeFilter = OneOrManyExpressionBuilder<ItemValue, ItemValueType>(itemValueTypes, iv => iv.Type);
|
||||
|
||||
return baseQuery.Where(item =>
|
||||
context.ItemValues
|
||||
.Where(typeFilter)
|
||||
.Join(context.ItemValuesMap, e => e.ItemValueId, e => e.ItemValueId, (itemVal, map) => new { itemVal, map })
|
||||
.Any(val =>
|
||||
itemValueTypes.Contains(val.itemVal.Type)
|
||||
&& context.BaseItems.Where(itemFilter).Any(e => e.CleanName == val.itemVal.CleanValue)
|
||||
context.BaseItems.Where(itemFilter).Any(e => e.CleanName == val.itemVal.CleanValue)
|
||||
&& val.map.ItemId == item.Id) == EF.Constant(!invert));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue