fix(database): 解决数据管理表联合索引长度超限问题

- 为 logical_path 字段创建前缀索引以避免索引长度超限
- 添加注释说明 utf8mb4 下索引长度按字节计算的限制
- 提供后续优化建议:使用 hash 生成列方案替代 VARCHAR 索引
This commit is contained in:
2026-02-05 02:17:58 +08:00
parent f15fd044ce
commit 9057807ec1

View File

@@ -69,7 +69,9 @@ CREATE TABLE IF NOT EXISTS t_dm_dataset_files (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (dataset_id) REFERENCES t_dm_datasets(id) ON DELETE CASCADE, FOREIGN KEY (dataset_id) REFERENCES t_dm_datasets(id) ON DELETE CASCADE,
INDEX idx_dm_dataset (dataset_id), INDEX idx_dm_dataset (dataset_id),
INDEX idx_dm_dataset_logical_path (dataset_id, logical_path, version), -- 说明:utf8mb4 下索引长度按字节计算(最长 3072 bytes)。logical_path=VARCHAR(1000) 参与联合索引会超限,
-- 这里改为前缀索引以保证初始化可执行;如需“完全避免 VARCHAR 参与索引”,建议改用 hash 生成列方案。
INDEX idx_dm_dataset_logical_path (dataset_id, logical_path(700), version),
INDEX idx_dm_file_type (file_type), INDEX idx_dm_file_type (file_type),
INDEX idx_dm_file_status (status), INDEX idx_dm_file_status (status),
INDEX idx_dm_upload_time (upload_time) INDEX idx_dm_upload_time (upload_time)