C# Entity Framework Core 优化查询:WareSkuDetailImageSetting 联合索引
可以为 WareSkuDetailImageSetting 的 SpecId01、SpecId02、SpecId03、SpecItemId01、SpecItemId02、SpecItemId03 字段创建联合索引,以优化查询性能。ApplyStatus 字段可以不做索引,因为它的基数很小,即只有几个可能的取值。如果需要在查询中使用 ApplyStatus 字段,可以将其包含在联合索引中。
public class WareSkuDetailImageSetting : Entity
{
public long WareId { get; set; }
public long CatalogWareId { get; set; }
public long BrandId { get; set; }
public long SpecId01 { get; set; }
public long SpecItemId01 { get; set; }
public long SpecId02 { get; set; }
public long SpecItemId02 { get; set; }
public long SpecId03 { get; set; }
public long SpecItemId03 { get; set; }
public WareConstant.ApplyStatus ApplyStatus { get; set; }
public List<Image> Images { get; set; } = new();
}
long[] wareSkuSpecItemIds = wareSku.Attrs.Select(n => n.VId).ToArray();
WareSkuDetailImageSetting wareSkuDetailImageSetting = await _productDbContext.WareSkuDetailImageSetting
.FirstOrDefaultAsync(n => n.SpecId01 == catalogWareSkuDetailImageSpecs.SpecId01
&& n.SpecId02 == catalogWareSkuDetailImageSpecs.SpecId02
&& n.SpecId03 == catalogWareSkuDetailImageSpecs.SpecId03
&& n.ApplyStatus == WareConstant.ApplyStatus.Applied
&& n.DelStatus != DelStatusConstant.Deleted
&& (wareSkuSpecItemIds.Contains(n.SpecItemId01)
&& wareSkuSpecItemIds.Contains(n.SpecItemId02)
&& wareSkuSpecItemIds.Contains(n.SpecItemId03)));
原文地址: https://www.cveoy.top/t/topic/gFDj 著作权归作者所有。请勿转载和采集!