【问题标题】:using case when exists to check if records are present in the db使用 case when exists 检查数据库中是否存在记录
【发布时间】:2012-08-23 18:15:50
【问题描述】:

哪个查询会更快

SELECT CASE WHEN EXISTS (SELECT 1 FROM table WHERE 条件) 那么'Y' 否则'N' 从双重结束

SELECT 1 FROM table WHERE 条件

对于他们两个,我将 fetchSize 设置为 1。

但是,我想知道如果我使用第二个查询,我只需要检查 if ( rs.next() ),而对于第一个查询,我需要检查一个附加条件rs.getString(1).equals("Y")。同时我想知道如果在sql中使用when存在,会以某种方式使查询更快

我检查了其他问题The fastest way to check if some records in a database table?Fastest way to check if set exists in database set,他们谈论使用存在。所以,只是想知道我是否应该使用exists,以及如果我需要使用它来使查询更快,它如何使查询更快?

【问题讨论】:

    标签: java sql oracle prepared-statement


    【解决方案1】:

    关于你可能会得到 'no_data_found' 或 'to_many_rows' 导致读取字典以获取错误代码等等,使用语句 'SELECT 1 FROM table WHERE condition' 第一种方式会更快

    【讨论】:

      【解决方案2】:
      SELECT 1 FROM table WHERE condition
      

      如果结果集没有返回任何行,则表示不满足条件,否则满足条件。

      更好、更干净、更短、更快。

      【讨论】:

      • 只有在有 1 条(不多也不少)记录的情况下,您的答案才是正确的,否则它不正确且速度较慢。在我的回答中,我解释了原因,但如果您不相信 - 只需制作具有 3 种结果的测试用例:大部分是满足条件的数据并且只有 1 条记录,最好的部分不满足条件,很多情况下,不止一条记录满足条件。
      猜你喜欢
      • 2020-01-31
      • 1970-01-01
      • 2013-08-07
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      相关资源
      最近更新 更多