Java SQL查询,最有效的匹配列值检查?

Java SQL查询,最有效的匹配列值检查?,java,mysql,sql,Java,Mysql,Sql,我有一个可能有20万到30万行的表 我需要检查表中是否存在主键。 以下是我到目前为止的情况: public boolean checkIfKeyExists(String userkey) { try { connection = getSQLConnection(); PreparedStatement ps = connection.prepareStatement("SELECT userkey FROM " + keytable + " WHERE

我有一个可能有20万到30万行的表

我需要检查表中是否存在主键。

以下是我到目前为止的情况:

public boolean checkIfKeyExists(String userkey) {
    try {
        connection = getSQLConnection();
        PreparedStatement ps = connection.prepareStatement("SELECT userkey FROM " + keytable + " WHERE userkey = ?");
        ps.setString(1, userkey);
        ResultSet rs = ps.executeQuery();
        boolean set = false;
        while(rs.next()){
            set = true;
        }
        close(ps,rs);
        return set;
    } catch (SQLException ex) {
        Error.execute(plugin, ex);
    }
    return false;
}
必须使用一个结果集并设置一个布尔值,这对于一个简单的键检查来说似乎太长了,你知道吗?
最简单的方法是什么

我看不出使用结果集的方法,但是您可以通过这样做来避免必须设置布尔值

return ps.executeQuery().next();

然后关闭
finally
块中的语句和结果集。

使用变量,您可以

set = rs.next();

另外,在SQL部分中,您可以让
选择1…
,这将加快工作速度。

无论是否有结果,这都会返回true/false?@ThatGuy343不符合条件。在最初的实现中,您也基于
next()
的结果来设置您的标志。这肯定是一种更有效的方法。如果它是主键,并且您检查是否相等,您最多应该得到一行。操作不应该太长。@fabian您是codecanyon中的fabian吗?因此,如果我将“从keytable中选择1”与“选择用户键”相同?结果集的内容显然不同,但行数相同。