mysql 需要查询INDEX?
mysql query INDEX is needed?
我的网站有一个关注系统,它是一个在线游戏。
所以,在这个游戏中,一个玩家可以跟随另一个玩家结盟。
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
是谁在关注。
我的问题是,如果将来这个 table 包含大量用户,我是否应该使用索引?我该如何使用它?
我在游戏中所做的是:
select `follow` from follow where player = $
所以索引应该是player
?任何优化帮助?
如果 table 变大,索引 player
肯定会加快您的查询速度。如果这是您打算在 table 上 运行 的唯一查询,我将索引 player, follow
,因此可以通过 player
搜索该查询,然后是 player
的值follow
从同一索引检索,而无需访问 table。
当表示这样的多对多关系时,最佳做法通常是让主键在 player
和 follow
上都成为多键。
由于您可能需要通过这两种方式进行多对多映射,因此您需要:
PRIMARY KEY(player, follow),
INDEX (follow, player)
我的网站有一个关注系统,它是一个在线游戏。 所以,在这个游戏中,一个玩家可以跟随另一个玩家结盟。
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
是谁在关注。
我的问题是,如果将来这个 table 包含大量用户,我是否应该使用索引?我该如何使用它?
我在游戏中所做的是:
select `follow` from follow where player = $
所以索引应该是player
?任何优化帮助?
索引 player
肯定会加快您的查询速度。如果这是您打算在 table 上 运行 的唯一查询,我将索引 player, follow
,因此可以通过 player
搜索该查询,然后是 player
的值follow
从同一索引检索,而无需访问 table。
当表示这样的多对多关系时,最佳做法通常是让主键在 player
和 follow
上都成为多键。
由于您可能需要通过这两种方式进行多对多映射,因此您需要:
PRIMARY KEY(player, follow),
INDEX (follow, player)