我的网站上有一个关注系统,它是一个在线游戏。 所以,在这个游戏中,一个玩家可以跟随另一个玩家结盟。
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
?任何优化帮助?
答案 0 :(得分:1)
如果表变大,索引player
肯定会加快查询速度。如果这是您打算在表上运行的唯一查询,我会将player, follow
编入索引,因此可以通过player
搜索查询,然后从follow
检索到的值{{1}}相同的索引,无需访问该表。
答案 1 :(得分:0)
在表示这样的多对多关系时,最佳做法通常是在player
和follow
上使主键成为一个多键。
答案 2 :(得分:0)
由于您可能需要通过两种方式完成这种多对多映射,因此您需要:
PRIMARY KEY(player, follow),
INDEX (follow, player)