这是我的情况:
• I have a table of users <br><br>
• I have a table of movies <br><br>
• I have a table of user_movies that associates users to movies that stores a frequently changing "score" column on each record.<br><br>
• I need to be able to bulk update the user_movies table for speed and to do so I believe I need a unique index to be able to pull off bulk updates like this.<br><br>
• Considering each user_movie combination is unique, would it be possible to do
做类似 (User_id--->) uid_mid (<----movie_id)
的事情作为唯一标识符?如果是这样,如何将现有表转换为此表?
最佳答案
我想有一种方法可以使用两列索引来解决您的问题,但是......
我想回答最初的问题并假设您确实想将这些列合并为一个,我建议考虑如下内容:
ALTER TABLE user_movies ADD COLUMN new_id VARCHAR(250);
UPDATE user_moves SET new_id=CONCAT(CAST(user_id as CHAR(125)), LPAD(CAST(move_id as CHAR(125)),125,'0'));
CREATE UNIQUE INDEX myindex ON user_movies(new_id);
数字 250 和 125 当然是任意的,但您希望它们足够大以适合您的实际 ID。我正在填充第二个 id,以确保它们确实是唯一的(因为我们不希望 user_id=55/movie_id=66 获得与 user_id=5/movie_id=566 相同的 id)。
关于php - Varchar 类型的 MySql 复合唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482274/