Я должен использовать индексы для many-many таблицы базы данных?

делает имеет смысл создавать индексы для таблицы, названной user_movies со следующими столбцами:

user_id movie_id

Будет намного больше чтения, чем вставка или обновление на этой таблице, но я не уверен, что сделать. Также: Соответствует это для исключения первичного ключа в этой ситуации?

5
задан psaniko 4 January 2010 в 23:36
поделиться

3 ответа

Правильное определение для этой таблицы следующее:

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 объявление иностранного или первичного ключа неявно создает индекс. Да, это выгодно.

10
ответ дан 13 December 2019 в 05:36
поделиться

Я бы проиндексировал оба столбца по отдельности, и да, вы можете исключить первичный ключ.

1
ответ дан 13 December 2019 в 05:36
поделиться

Если вы используете такой "соединительный стол", вы, вероятно, будете использовать некоторые соединения в ваших запросах - и они, вероятно, выиграют от индекса на каждый из этих двух столбцов (что означает два отдельных индекса).

0
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: