Java SQL查询,最有效的匹配列值检查?
我有一个可能有20万到30万行的表 我需要检查表中是否存在主键。 以下是我到目前为止的情况: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
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”与“选择用户键”相同?结果集的内容显然不同,但行数相同。