0

我正在将程序形式 python 转换为 java,我正在使用 mysql

在某些时候,如果我有带有特殊键的数据,我必须检查我的数据库。比方说

if(namesTable.haskey(24))
   doSoemthing();

我不需要从 db 中检索到的任何数据,我只想看看是否有任何具有此特殊键的内容。此外,我不想使用 COUNT,因为使用 count 意味着遍历所有数据库并给我一个像 248 这样的数字,而我只关心是否有。

一旦在数据库中找到匹配项,我想要一些东西给我一个是的。

4

2 回答 2

0

(我将“如果我有带有特殊键的数据,请检查我的数据库”解释为您正在检查单个表中的单个列是否存在特定值。这似乎是最直接的解释。)

如果您需要检查表以查看特定表中是否存在行,并且特定列中具有特定值,那么最有效的查询可能是:

SELECT 1
  FROM DUAL
 WHERE EXISTS (SELECT 1
                 FROM mytable t
                WHERE t.key = 24
              )

伪表 DUAL 保证返回不超过一行,一旦找到一行,EXISTS 子查询将“退出”为 TRUE。

为了获得最佳性能,您需要一个以键为前导列的索引,例如

ON mytable (key) 
于 2013-07-15T00:23:44.843 回答
0

我建议在您的应用程序中使用标志,例如:

Boolean hasKey = false;
  1. 在您的程序启动时,您只需运行namesTable一次 sql 查询以检查它是否具有特殊键,并根据该查询结果集将hasKey. 从那时起,您不需要再次检查数据库,您可以简单地使用:

    if(hasKey) { soSomething(); }

  2. 在添加/更新记录时namesTable,检查它是否具有特殊键,如果是,则将hasKey标志设置为true

于 2013-07-15T01:20:31.643 回答