联接表的一些优化

时间:2019-04-21 22:55:26

标签: java mysql join uuid

我在 Java 应用程序中使用了 MySQL 。由于我对MySQL有点陌生,所以我想知道一些事情。

我有2张桌子,Players和PausedCooldowns。

表Players具有most_uuid和minimum_uuid作为主键。 表PausedCooldowns具有most_uuid,lessest_uuid作为主键和外键。

显然,PausedCooldowns中的most_uuid和minimum_uuid不是唯一的,因为玩家可以拥有1次以上的冷却时间。

当玩家加入时,我必须注册他及其价值。我正在为此做的是这个请求:

SELECT * FROM Players 
INNER JOIN PausedCooldowns 
ON Players.most_uuid = PausedCooldowns.most_uuid
AND Players.least_uuid = PausedCooldowns.least_uuid
WHERE most_uuid = ? AND least_uuid = ?

如果我没记错的话,我的ResultSet将具有许多值(如果玩家的冷却时间超过1次),我将不得不使用while循环对其进行迭代。

我的决赛桌通常看起来像这样: Joined table http://prntscr.com/nf1a7z

现在让我们来解决问题:

  • 在第一次迭代中,我将注册播放器及其大部分值(未在表中显示)和一个冷却时间。
  • 在第二次迭代中,我将只需要注册第二个冷却时间,而忽略第一个值。
  • 3号等,等等,等等。

这意味着在每次迭代中,我都必须检查播放器是否已在插件的缓存中注册。而且我认为这不是最有效的方法。

您知道执行此操作的其他方法吗?还是最好的选择?知道还有很多其他表我也必须加入,例如Notes(包含有关玩家的信息)表,Reports(包含其他玩家的报告)表等。

感谢您的任何帮助,对于本篇文章的冗长,深表歉意。我想提供更多信息

0 个答案:

没有答案