Sfoglia il codice sorgente

优化表联查的策略

lixing 2 anni fa
parent
commit
4cca5e8c04

+ 1 - 1
src/main/java/com/persagy/apm/dmpalarm/dao/ShardingMapper.java

@@ -28,7 +28,7 @@ public interface ShardingMapper {
 	@Select("<script>SELECT TABLE_NAME tableName,suffix FROM ( "
 			+ "		SELECT TABLE_NAME, CONVERT(SUBSTRING_INDEX(TABLE_NAME,'_',-1),SIGNED) suffix "
 			+ "		FROM information_schema.tables  "
-			+ "		WHERE table_schema=(SELECT DATABASE()) AND TABLE_NAME LIKE CONCAT('%',#{tableNamePrefix},'%') "
+			+ "		WHERE table_schema=(SELECT DATABASE()) AND TABLE_NAME LIKE CONCAT(#{tableNamePrefix},'%') "
 			+ "		)ls "
 			+ "		<where> "
 			+ "			<if test=\"null!= startTime and startTime > 0\"> "

+ 7 - 1
src/main/java/com/persagy/apm/dmpalarm/service/impl/ShardingServiceImpl.java

@@ -9,6 +9,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import org.apache.ibatis.type.TypeHandler;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,7 +74,12 @@ public class ShardingServiceImpl implements IShardingService {
 			log.error("getTableNameShardingList tableNamePrefix is empty");
 			return new ArrayList<>();
 		}
-		return shardingMapper.getTableNameShardingList(tableInfo.getTableName(), startTimeInterger, endTimeInterger);
+		List<ShardingEntity> tableNameShardingList = shardingMapper.getTableNameShardingList(tableInfo.getTableName(), startTimeInterger, endTimeInterger);
+		// 以日期结尾的表才是真正需要的表
+		tableNameShardingList = tableNameShardingList.stream().
+				filter(tableEntity -> tableEntity.getSuffix()!=0).
+				collect(Collectors.toList());
+		return tableNameShardingList;
 	}
 
 	@Override