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