java - 用Java查询MySQL数据库,指定需要哪些字段会更高效吗?

标签 java mysql

在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/

相关文章:

mysql数据库在golang中报错【sql : database is closed】

php - php-插入sql错误

java - JTree DefaultTreeCellRenderer 基于级别的颜色

java - 请求处理失败;嵌套异常是 org.hibernate.exception.ConstraintViolationException : Could not execute JDBC batch update

java - 如何从对象中包含的对象列表中每个元素的字段中检索字符串集?

java - 无需修改 web.xml 的 Tomcat BASIC Auth

mysql - 对主键列使用 mediumint 而不是 int 的好处?

php - 选择 * 但没有包含 "This"的结果

java - 在 UNIX 中运行 Python 时没有名为 java.lang.System 的模块

MySQL-错误号 150 : "Foreign key constraint is incorrectly formed"