-- ===================================================== -- 投票模型从"每日额度"切换为"终身 12 票 + 每艺人 1 票" -- 生成时间: 2026-05-15 -- 影响: votes 表 -- ===================================================== -- 1. 先加唯一约束:每个用户对每个艺人最多 1 票(DB 层硬约束) -- 生产探查确认零重复 (userId, artistId),加约束不会失败 -- leading column 是 user_id,可作为 FK(votes.user_id → users.id)的索引基础 ALTER TABLE `votes` ADD UNIQUE INDEX `votes_user_id_artist_id_key` (`user_id`, `artist_id`); -- 2. 删除旧的非唯一复合索引(userId, artistId, createdAt) -- 新 unique 索引以 user_id 开头,已经能满足 FK 约束的 leading 索引要求 ALTER TABLE `votes` DROP INDEX `votes_user_id_artist_id_created_at_idx`; -- ===================================================== -- 回滚 SQL(如需撤销) -- ALTER TABLE `votes` ADD INDEX `votes_user_id_artist_id_created_at_idx` (`user_id`, `artist_id`, `created_at`); -- ALTER TABLE `votes` DROP INDEX `votes_user_id_artist_id_key`; -- =====================================================