在Java中查询MySQL数据库同时指定查询中的字段效率更高还是使用*通配符更有效?
我当前的代码是
try (Statement statement = SQL.connection.createStatement()) {
try (ResultSet rs = statement.executeQuery("SELECT player_name, ip FROM " + SQL.database + "." + TableType.PlayerProfile.tableName + " WHERE ip='" + getPlayerIP(args[0]) + "' AND not(player_name='" + args[0] + "');")) {
if (!rs.isBeforeFirst()) {
sender.sendMessage("§7No accounts are associated with this player's ip");
} else {
sender.sendMessage("§7" + getServer().getOfflinePlayer(args[0]).getName() + "'s §lpossible §7alternative accounts:");
while (rs.next()) if (!args[0].equalsIgnoreCase(rs.getString("player_name"))) sender.sendMessage("§7" + getServer().getOfflinePlayer(rs.getString("player_name")).getName());
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
所以查询是
"SELECT player_name, ip FROM " + SQL.database + "." + TableType.PlayerProfile.tableName + " WHERE ip='" + getPlayerIP(args[0]) + "' AND not(player_name='" + args[0] + "');"
然后我使用 Java 代码 rs.getString("player_name")
来获取我需要的字段之一(稍后我会对 ip 字段执行相同的操作)
这是否有效,或者我应该使用 * 通配符而不是指定我将在 Java 代码中使用的字段?
最佳答案
当然,指定/减少您尝试访问的字段会更有效。 RDBMS 访问的数据更少。如果您尝试访问远程数据库,则通过网络传输的数据更少。 此外 * 说明符不保证返回字段的顺序。如果您的代码应该与不同的数据库引擎一起使用,您可能会惊讶地发现返回的第 3 列引用了不同的内容(已经这样做了)。因此,即使您尝试访问语句/表的完整宽度,显式指定您想要访问的列仍然是更省钱的方法。
关于java - 用Java查询MySQL数据库,指定需要哪些字段会更高效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26855015/