我应该为多对多数据库表使用索引吗?

psa*_*iko 5 mysql database indexing

使用以下列为名为user_movies的表创建索引是否有意义:

user_id movie_id

在这张桌子上插入或更新会有更多的阅读,但我不知道该怎么做.另外:在这种情况下是否足以省略主键?

Bil*_*win 10

该表的正确定义如下:

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;
Run Code Online (Sandbox Code Playgroud)

注意"主键"是约束,而不是列.最佳做法是在每个表中都有一个主键约束.不要将主键约束与自动生成的伪键列混淆.

在MySQL中,声明外键或主键隐式创建索引.是的,这些都是有益的.