在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代码中使用的字段?
发布于 2014-11-10 23:46:47
当然,指定/减少要访问的字段更有效。减少了RDBMS要访问的数据。减少通过网络传输的数据,以防您试图访问远程DB。此外,*说明符并不保证返回字段的顺序。如果您的代码应该与不同的DB引擎一起工作,那么您可能会惊讶地看到返回的第3列引用了不同的内容(就这样做了)。因此,即使您试图访问一个语句/表的全部宽度,仍然可以显式地指定您想要访问的cols。
https://stackoverflow.com/questions/26855015
复制相似问题