Некоторая оптимизация в соединении таблиц - PullRequest
1 голос
/ 22 апреля 2019

Я использую MySQL в моем Java приложении.Поскольку я немного новичок в MySQL, мне хотелось бы кое-что узнать.

У меня есть 2 стола, Players и PausedCooldowns.

Таблица Players имеет в качестве первичных ключей most_uuid и less_uuid.Таблица PausedCooldowns имеет most_uuid, less_uuid в качестве первичного и внешнего ключей.

Очевидно, что most_uuid и less_uuid в PausedCooldowns не являются УНИКАЛЬНЫМИ, потому что у игрока может быть более 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.

Мой финальный стол обычно будет выглядеть так: Объединенный стол http://prntscr.com/nf1a7z

Теперь давайте подойдем к проблеме:

  • На моем первомитерация. Я зарегистрирую игрока и большинство его значений (не отображаются в таблице) и одно время восстановления.
  • На 2-й итерации мне нужно будет зарегистрировать только 2-е время восстановления, игнорируя первые значения.
  • На 3-м и т. Д. И т. Д. И т. П.

Это означает, что на каждой итерации мне придется проверять, зарегистрированы ли игроки в кеше плагина.И я не думаю, что это самый эффективный способ сделать это.

Знаете ли вы какие-либо другие способы сделать это или это лучший вариант?Зная, что мне нужно будет присоединиться и ко многим другим столам, таким как таблица Notes (содержащая информацию об игроках), таблица Reports (содержащая отчеты от других игроков) и т. Д.

Спасибоза любую помощь и извините за длину этого поста.Я хотел дать как можно больше информации

...