diff --git a/src/Oms.SqlSugarCore/Channels/KpiAreaRepository.cs b/src/Oms.SqlSugarCore/Channels/KpiAreaRepository.cs index c887260..e50b197 100644 --- a/src/Oms.SqlSugarCore/Channels/KpiAreaRepository.cs +++ b/src/Oms.SqlSugarCore/Channels/KpiAreaRepository.cs @@ -80,12 +80,15 @@ public class KpiAreaRepository : OmsSqlSugarRepository, IKpiAreaReposit CancellationToken cancellationToken = default) { var db = await GetDbContextAsync(cancellationToken); - var rows = await db.Queryable() + // Content 为大 JSON:禁止 SELECT * + ORDER BY(filesort 打满 sort_buffer) + var ids = await db.Queryable() .Where(x => x.AreaId == areaId && x.ContentHash == contentHash) .OrderBy(x => x.Id, OrderByType.Desc) + .Select(x => x.Id) .Take(1) .ToListAsync(cancellationToken); - return rows.FirstOrDefault(); + var id = ids.FirstOrDefault(); + return id <= 0 ? null : await GetPublishByIdAsync(id, cancellationToken); } public async Task GetPublishByAreaIdAndVersionAsync( @@ -99,12 +102,15 @@ public class KpiAreaRepository : OmsSqlSugarRepository, IKpiAreaReposit } var db = await GetDbContextAsync(cancellationToken); - var rows = await db.Queryable() + // 查价 hydrate 分区包会走这里;先只排 Id,再按主键取 Content + var ids = await db.Queryable() .Where(x => x.AreaId == areaId && x.Version == version) .OrderBy(x => x.Id, OrderByType.Desc) + .Select(x => x.Id) .Take(1) .ToListAsync(cancellationToken); - return rows.FirstOrDefault(); + var id = ids.FirstOrDefault(); + return id <= 0 ? null : await GetPublishByIdAsync(id, cancellationToken); } public async Task> GetPublishHeadersByAreaIdAsync(