需要mysql查询INDEX吗?

时间:2015-10-01 22:43:45

标签: mysql select indexing database-administration

我的网站上有一个关注系统,它是一个在线游戏。 所以,在这个游戏中,一个玩家可以跟随另一个玩家结盟。

CREATE TABLE IF NOT EXISTS `follow` (
  `player` INT NOT NULL REFERENCES cadastro (`id`),
  `follow` INT NOT NULL REFERENCES cadastro (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

player是谁。 我的问题是,如果将来这个表包含大量用户,我应该使用索引吗?我该怎么用呢?

我在游戏中所做的是:

select `follow` from follow where player = $

所以索引应该是player?任何优化帮助?

3 个答案:

答案 0 :(得分:1)

如果表变大,索引player肯定会加快查询速度。如果这是您打算在表上运行的唯一查询,我会将player, follow编入索引,因此可以通过player搜索查询,然后从follow检索到的值{{1}}相同的索引,无需访问该表。

答案 1 :(得分:0)

在表示这样的多对多关系时,最佳做法通常是在playerfollow上使主键成为一个多键。

答案 2 :(得分:0)

由于您可能需要通过两种方式完成这种多对多映射,因此您需要:

PRIMARY KEY(player, follow),
INDEX      (follow, player)