делает имеет смысл создавать индексы для таблицы, названной user_movies со следующими столбцами:
user_id movie_id
Будет намного больше чтения, чем вставка или обновление на этой таблице, но я не уверен, что сделать. Также: Соответствует это для исключения первичного ключа в этой ситуации?
Правильное определение для этой таблицы следующее:
CREATE TABLE user_movies (
user_id INT NOT NULL,
movie_id INT NOT NULL,
PRIMARY KEY (user_id, movie_id),
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (movie_id) REFERENCES movies(movie_id)
) ENGINE=InnoDb;
Обратите внимание, что "первичный ключ" - это ограничение, а не столбец. Лучше всего иметь в каждой таблице ограничение первичного ключа -. Не путайте ограничение первичного ключа с автоматически сгенерированным псевдоключевым столбцом.
В MySQL объявление иностранного или первичного ключа неявно создает индекс. Да, это выгодно.
Я бы проиндексировал оба столбца по отдельности, и да, вы можете исключить первичный ключ.
Если вы используете такой "соединительный стол", вы, вероятно, будете использовать некоторые соединения в ваших запросах - и они, вероятно, выиграют от индекса на каждый из этих двух столбцов (что означает два отдельных индекса).