我正在将程序形式python翻译成java,我正在使用mysql
在某些时候我必须检查我的数据库是否有特殊密钥的数据。 让我们说
if(namesTable.haskey(24))
doSoemthing();
我不需要来自db的任何检索数据我只想查看是否有任何关于此特殊键的内容。另外,我不想使用COUNT,因为使用count意味着通过所有数据库并给我一个像248这样的数字,而我只关心是否有。
一旦在数据库中找到匹配项,我想要一些东西给我一个。
答案 0 :(得分:0)
(我解释了我的数据库中的“检查,如果我有一个带有特殊键的数据”,则表示您正在检查单个表中的单个列是否存在特定值。似乎是最直接的解释。)
如果需要检查表以查看特定表中是否存在行,并且特定列中包含特定值,则最有效的查询可能是:
SELECT 1
FROM DUAL
WHERE EXISTS (SELECT 1
FROM mytable t
WHERE t.key = 24
)
伪表DUAL保证返回不超过一行,并且只要找到一行,EXISTS子查询将“退出”并返回TRUE。
为了获得最佳性能,您需要一个带键作为前导列的索引,例如
ON mytable (key)
答案 1 :(得分:0)
我建议在你的应用程序中使用一个标志,例如:
Boolean hasKey = false;
在程序启动时,您需要只针对namesTable
运行一次sql查询以检查它是否具有特殊密钥,并根据该查询结果集hasKey
。从那时起,您不需要再次检查数据库,只需使用:
如果(hasKey) { soSomething(); }
在namesTable
中添加/更新记录时,检查它是否有特殊密钥,如果是,则将hasKey
标记设置为true
。