Entity Framework Core 索引优化:提升 WareSkuDetailImageSetting 查询效率
Entity Framework Core 索引优化:提升 WareSkuDetailImageSetting 查询效率
代码示例:
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)));
问题:
在上面的代码中,ApplyStatus 可以不做索引吗?
解决方案:
为了提升查询效率,建议对 ApplyStatus 进行索引。可以使用以下代码添加索引:
modelBuilder.Entity<WareSkuDetailImageSetting>()
.HasIndex(x => x.ApplyStatus);
除了 ApplyStatus,还可以对其他经常用于查询的属性进行索引,例如:
modelBuilder.Entity<WareSkuDetailImageSetting>()
.HasIndex(x => new { x.SpecId01, x.SpecId02, x.SpecId03 });
通过添加索引,可以显著提高查询性能。
原文地址: https://www.cveoy.top/t/topic/gFDs 著作权归作者所有。请勿转载和采集!