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 });

通过添加索引,可以显著提高查询性能。

Entity Framework Core 索引优化:提升 WareSkuDetailImageSetting 查询效率

原文地址: https://www.cveoy.top/t/topic/gFDs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录