Browse Source

告警表增加索引

jwy
review512jwy@163.com 3 days ago
parent
commit
0033479987
  1. 46
      data-center-business-controller/src/main/resources/db/migration/V112__f10_journal_log_sendTs.sql
  2. 20
      data-center-business-controller/src/main/resources/db/migration/V113__idx_alert_history_search.sql
  3. 2
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/AccountServiceImpl.java

46
data-center-business-controller/src/main/resources/db/migration/V112__f10_journal_log_sendTs.sql

@ -0,0 +1,46 @@
-- 1. 添加字段
ALTER TABLE f10_journal_log
ADD COLUMN send_timestamp bigint DEFAULT NULL COMMENT 'send_date+send_time的毫秒级时间戳'
AFTER receive_timestamp;
-- 2. 回填日本时间 -> UTC毫秒时间戳
UPDATE f10_journal_log
SET send_timestamp =
UNIX_TIMESTAMP(
CONVERT_TZ(
STR_TO_DATE(
CONCAT(send_date, send_time),
'%Y%m%d%H%i%s'
),
'Asia/Tokyo',
'+00:00'
)
) * 1000
WHERE send_date IS NOT NULL
AND send_time IS NOT NULL;
-- 3. 删除重复,保留id最大
DELETE t1
FROM f10_journal_log t1
JOIN f10_journal_log t2
ON t1.device_id = t2.device_id
AND t1.instruction_flag = t2.instruction_flag
AND t1.send_timestamp = t2.send_timestamp
AND t1.id < t2.id;
-- 4. 删除旧唯一索引
ALTER TABLE f10_journal_log
DROP INDEX uk_device_alarm_ts;
-- 5. 创建新唯一索引
ALTER TABLE f10_journal_log
ADD UNIQUE KEY uk_device_instruction_send_time
(
device_id,
instruction_flag,
send_timestamp
) USING BTREE;

20
data-center-business-controller/src/main/resources/db/migration/V113__idx_alert_history_search.sql

@ -0,0 +1,20 @@
-- 判断索引是否存在
SET @index_exists = (
SELECT COUNT(*)
FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'alert_history'
AND index_name = 'idx_alert_history_search'
);
-- 根据判断结果生成 SQL
SET @sql = IF(
@index_exists = 0,
'CREATE INDEX idx_alert_history_search ON alert_history (block_flag, source_type, handle_status)',
'SELECT "Index idx_alert_history_search already exists." AS message'
);
-- 执行 SQL
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

2
data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/AccountServiceImpl.java

@ -253,7 +253,7 @@ public class AccountServiceImpl implements AccountService {
Map<String, DashboardTreeMenusDTO> allMenuMap = allMenus.stream() Map<String, DashboardTreeMenusDTO> allMenuMap = allMenus.stream()
.collect(Collectors.toMap(DashboardTreeMenusDTO::getMenuId, m -> m)); .collect(Collectors.toMap(DashboardTreeMenusDTO::getMenuId, m -> m));
// 🔥 提前构建 parent -> children 映射(性能优化) // 提前构建 parent -> children 映射(性能优化)
Map<String, List<DashboardTreeMenusDTO>> childrenMap = new HashMap<>(); Map<String, List<DashboardTreeMenusDTO>> childrenMap = new HashMap<>();
for (DashboardTreeMenusDTO menu : allMenus) { for (DashboardTreeMenusDTO menu : allMenus) {
childrenMap childrenMap

Loading…
Cancel
Save