From 1704c9f1e26ea70affd9e8ff47e7b36e4c18d836 Mon Sep 17 00:00:00 2001 From: zzh <1368735060@qq.com> Date: Wed, 7 Oct 2026 18:59:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=86=E5=8C=BA=E5=8C=85=E6=8C=89=20I?= =?UTF-8?q?d=20=E6=9F=A5=E8=AF=A2=E9=81=BF=E5=85=8D=E5=A4=A7=20JSON=20?= =?UTF-8?q?=E5=8F=82=E4=B8=8E=20ORDER=20BY=20filesort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bb8c0a9 后查价 hydrate 会 SELECT Content 并 ORDER BY,大分区包打满 sort_buffer;改为先取 Id 再按主键加载。 Co-authored-by: Cursor --- src/Oms.SqlSugarCore/Channels/KpiAreaRepository.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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(