diff --git a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java index 547fe2e53..faea07a2b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/database/databases/sql/tables/UserInfoTable.java @@ -361,8 +361,34 @@ public class UserInfoTable extends UserIDTable { } } - // TODO improve performance of this method. public Set getSavedUUIDs(UUID serverUUID) throws SQLException { - return getSavedUUIDs().get(serverUUID); + String usersIDColumn = usersTable + "." + UsersTable.Col.ID; + String usersUUIDColumn = usersTable + "." + UsersTable.Col.UUID + " as uuid"; + String serverIDColumn = serverTable + "." + ServerTable.Col.SERVER_ID; + String serverUUIDColumn = serverTable + "." + ServerTable.Col.SERVER_UUID + " as s_uuid"; + String sql = "SELECT " + + usersUUIDColumn + ", " + + serverUUIDColumn + + " FROM " + tableName + + " INNER JOIN " + usersTable + " on " + usersIDColumn + "=" + Col.USER_ID + + " INNER JOIN " + serverTable + " on " + serverIDColumn + "=" + Col.SERVER_ID + + " WHERE s_uuid=?"; + + return query(new QueryStatement>(sql, 50000) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setString(1, serverUUID.toString()); + } + + @Override + public Set processResults(ResultSet set) throws SQLException { + Set uuids = new HashSet<>(); + while (set.next()) { + UUID uuid = UUID.fromString(set.getString("uuid")); + uuids.add(uuid); + } + return uuids; + } + }); } } \ No newline at end of file