-- 1. 取消 file_path 的唯一约束,保留列 ALTER TABLE bag_file DROP INDEX `file_path`; -- 2. 为 file_name 建索引(用于 join / like 查询) ALTER TABLE bag_file ADD INDEX `idx_bag_file_name` (`file_name`); -- 3. 为 bag_update_time 建索引(用于 “每个 logical_name 取最新一条” 的子查询) ALTER TABLE bag_file ADD INDEX `idx_bag_update_time` (`bag_update_time`); ALTER TABLE bag_file ADD INDEX `idx_create_time` (`create_time`); -- 4. 为 bag_status 建索引 ALTER TABLE bag_file ADD INDEX idx_bag_status (bag_status); -- ============================ -- Table structure for bag_merge_record -- ============================ create table bag_merge_record ( id int(11) unsigned auto_increment comment '主键' primary key, joined_name varchar(255) not null comment '合并后 bag 名称(joined_name)', src_name varchar(255) not null comment '参与合并的原始 bag 名称', create_time datetime default CURRENT_TIMESTAMP not null comment '记录创建时间', created_by int null comment '操作用户 id', is_initiator tinyint(1) default 0 not null comment '1: 此 src 是本次合并的主 bag', constraint fk_bag_merge_created_by foreign key (created_by) references users (id) on update cascade on delete set null ) row_format = DYNAMIC; create index idx_created_by on bag_merge_record (created_by); create index idx_joined_name on bag_merge_record (joined_name); create index idx_src_name on bag_merge_record (src_name);