2017-11-25 3 views
0

Hier ist meine Situation:MySql Verbindung Eindeutiger Index des Typs Varchar

• 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 

etwas tun wie (User_id--->) uid_mid (<----movie_id) als eindeutige Kennung? Wenn ja, wie würde man eine bestehende Tabelle in diese umwandeln? jedoch

+1

Ich bin mir nicht sicher, ob ich verstehe, was Sie fragen, aber Sie verstehen, dass Sie einen Index für zwei Spalten erstellen können, oder? "CREATE UNIQUE INDEX myindex EIN user_movies (user_id, movie_id)" (Wenn Sie immer beide Spalten in allen Ihren Abfragen für diese Tabelle angeben, spielt die Reihenfolge der Spalten keine Rolle). – EdmCoff

+0

Wie kann ich eine Massenaktualisierung mit 2 Spalten durchführen, die zusammen einen eindeutigen Index ergeben, aber nicht separat? –

+0

Ich glaube, ich verstehe hier etwas falsch. Wie machst du das Bulk-Update? – EdmCoff

Antwort

0

ich eine Art und Weise denken, möchte es einen zweispaltigen Index für Ihr Problem zu verwenden, ...

Ich denke, die ursprüngliche Frage zu beantworten und annehmen, dass Sie wirklich die Spalten in eine kombinieren wollen, ich würde vorschlagen, so etwas wie die folgenden Berücksichtigung

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); 

die Nummern 250 und 125 beliebige natürlich sind, aber Sie würden wollen, dass sie groß genug, um Ihre tatsächlichen IDs passen. Ich fülle die zweite ID auf, um sicherzustellen, dass sie wirklich eindeutig ist (da wir nicht wollen, dass user_id = 55/movie_id = 66 dieselbe ID erhält wie user_id = 5/movie_id = 566).