Java 如何在mysql中通过查询实现haskey()函数
我正在将一个程序从python翻译成java,我正在使用mysql 在某个时刻,如果我有带有特殊密钥的数据,我必须签入我的数据库。 比方说Java 如何在mysql中通过查询实现haskey()函数,java,mysql,Java,Mysql,我正在将一个程序从python翻译成java,我正在使用mysql 在某个时刻,如果我有带有特殊密钥的数据,我必须签入我的数据库。 比方说 if(namesTable.haskey(24)) doSoemthing(); 我不需要从数据库中检索到任何数据,我只想看看是否有使用此特殊键的内容。另外,我不想使用COUNT,因为使用COUNT意味着遍历所有数据库,给我一个像248这样的数字,而我只关心是否有 在数据库中找到匹配项后,我希望有东西能尽快给我一个肯定的回答。(我解释了“如果我有带特
if(namesTable.haskey(24))
doSoemthing();
我不需要从数据库中检索到任何数据,我只想看看是否有使用此特殊键的内容。另外,我不想使用COUNT,因为使用COUNT意味着遍历所有数据库,给我一个像248这样的数字,而我只关心是否有
在数据库中找到匹配项后,我希望有东西能尽快给我一个肯定的回答。(我解释了“如果我有带特殊键的数据,请检查我的数据库”,这意味着您正在检查单个表中的单个列是否存在特定值。这似乎是最直接的解释。)
如果需要检查表以查看特定表中是否存在行,以及特定列中是否存在特定值,则最有效的查询可能是:
SELECT 1
FROM DUAL
WHERE EXISTS (SELECT 1
FROM mytable t
WHERE t.key = 24
)
伪表DUAL保证返回不超过一行,并且一旦找到一行,EXISTS子查询将以TRUE“退出”
为了获得最佳性能,您需要一个以key作为前导列的索引,例如
ON mytable (key)
我建议在应用程序中使用标志,如:
Boolean hasKey = false;
namesTable
运行一次sql查询,以检查它是否具有特殊键,并根据该查询结果设置hasKey
。从那时起,您无需再次检查数据库,只需使用:
如果(hasKey)
{
sososomething();
}名称表
中添加/更新记录时,检查它是否有特殊键,如果有,则将hasKey
标志设置为true
如果表已正确索引,则查询现有键不会“遍历所有数据库”。如
从key=value的表中选择1并检查结果数。