From 570566fbdc8a057db8eb8b47a1a4e471b25fd32a Mon Sep 17 00:00:00 2001 From: v-kkhuang <420895376@qq.com> Date: Mon, 1 Jun 2026 14:24:53 +0800 Subject: [PATCH] =?UTF-8?q?#AI=20commit#=20refactor:=E4=BF=AE=E5=A4=8Dlink?= =?UTF-8?q?ismanager=20=E6=85=A2sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linkis/manager/dao/LabelManagerMapper.java | 2 ++ .../impl/DefaultLabelManagerPersistence.java | 18 ++++++++++++++---- .../mapper/common/LabelManagerMapper.xml | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/LabelManagerMapper.java b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/LabelManagerMapper.java index aebac1d5bdd..dd65b28f913 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/LabelManagerMapper.java +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/LabelManagerMapper.java @@ -116,6 +116,8 @@ List> dimListNodeRelationsByKeyValueMap( List> getNodeRelationsByLabels( @Param("labels") List labels); + List> getNodeRelationsByLabelIds(@Param("labelIds") List labelIds); + /** * 通过instance信息,同时返回instance信息和label信息 * diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLabelManagerPersistence.java b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLabelManagerPersistence.java index bd5a4a1ff45..b507f4d449a 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLabelManagerPersistence.java +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLabelManagerPersistence.java @@ -298,11 +298,21 @@ public Map> getNodeRelationsByLabels( if (PersistenceUtils.persistenceLabelListIsEmpty(persistenceLabels)) return Collections.emptyMap(); try { - /*Map> keyValueMap = PersistenceUtils.filterEmptyPersistenceLabelList(persistenceLabels).stream().collect(Collectors.toMap(PersistenceLabel::getLabelKey, PersistenceLabel::getValue)); - String dimType = Label.ValueRelation.ALL.name(); - List> nodeRelationsByLabels = labelManagerMapper.dimListNodeRelationsByKeyValueMap(keyValueMap, dimType);*/ + // Step 1: 逐个通过 label_key + label_value 查询 label ID(走唯一索引,每次1行) + List labelIds = new ArrayList<>(); + for (PersistenceLabel label : persistenceLabels) { + PersistenceLabel dbLabel = + labelManagerMapper.getLabelByKeyValue(label.getLabelKey(), label.getStringValue()); + if (dbLabel != null) { + labelIds.add(dbLabel.getId()); + } + } + if (labelIds.isEmpty()) { + return Collections.emptyMap(); + } + // Step 2: 用 label ID 列表查询关联关系(走主键 + idx_lid_instance 索引) List> nodeRelationsByLabels = - labelManagerMapper.getNodeRelationsByLabels(persistenceLabels); + labelManagerMapper.getNodeRelationsByLabelIds(labelIds); List> arrays = new ArrayList>(); for (Map nodeRelationsByLabel : nodeRelationsByLabels) { diff --git a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/LabelManagerMapper.xml b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/LabelManagerMapper.xml index 2b99ebe1514..928d9105f0b 100644 --- a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/LabelManagerMapper.xml +++ b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/resources/mapper/common/LabelManagerMapper.xml @@ -340,6 +340,24 @@ + +