Необходимо получить все данные игрока из базы данных, для проверки насколько это быстро произойдет я создал цикл из 100 юзеров.
long start = System.currentTimeMillis();
System.out.println("Начал:");
for (int i = 1; i < 100; i++) {
System.out.println("user_" + i);
RPlayer p = new RPlayer("user_" + i);
p.getInfractions();//Получение значений из базы данных
p.getLocalization();//Получение значений из базы данных
p.getGroup();//Получение значений из базы данных
p.getAuth();//Получение значений из базы данных
p.getLevel();//Получение значений из базы данных
p.getKarma();//Получение значений из базы данных
p.getCoins();//Получение значений из базы данных
}
System.out.println("Заняло:" + (System.currentTimeMillis() - start));
Результат этого кода: https://hastebin.com/ibiwapiwuv.css
Время выполнения цикла заняло 23412 миллисекунд.
Во всех выше методах я использовал вот такую конструкцию:
public class RLevel {
private String player;
private Integer level;
private Integer xp;
private Statement statement;
public RLevel(RPlayer rPlayer) {
this.player = rPlayer.getName();
try {
this.statement = Core.getInstance().getSqlConnector().getConnection().createStatement();
ResultSet result = this.statement.executeQuery("SELECT * FROM level WHERE user = '" + this.player + "'");
if (result.next()) {
this.level = result.getInt("level");
this.xp = result.getInt("xp");
} else {
this.level = 0;
this.xp = 0;
insert();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void insert() {
try {
statement.executeUpdate("INSERT INTO level VALUES (user, level, xp) ON DUPLICATE KEY UPDATE user='" + this.player + "', level=" + this.level + ", xp=" + this.xp);
} catch (SQLException e) {
e.printStackTrace();
}
}
private void update() {
try {
this.statement.executeUpdate("UPDATE level SET level='" + this.level + ", xp=" + this.xp + "' WHERE user='" + this.player + "'");
} catch (SQLException e) {
e.printStackTrace();
}
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer count) {
this.level = count;
update();
}
public void levelUp() {
level++;
update();
}
public Integer getXp() {
return this.xp;
}
public void setXp(Integer count) {
this.xp = count;
update();
}
public void addXp(Integer count) {
this.xp = + count;
update();
}
}
В чем моя ошибка? Почему запрос бд занимает такое большое количество времени?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне нужно реализовать передачу файла с сервера на клиентФайл выбирается сервером и отправляется клиенту
В одной из папок приложения под андроид есть файл (а точнее несколько файлов) в одной и той-же ошибкой- "Unknown entity 'R'"