【问题标题】:limitation on SQL where clause using OR使用 OR 限制 SQL where 子句
【发布时间】:2015-07-27 07:55:25
【问题描述】:

我有一个类似的 SQL 请求:

select X from "myTable" where (cond1 AND cond2) OR (cond3 AND cond 4)...

我的子句 where 可以有多少个 (cond AND cond)?因为它在我的24578 条件下产生了 stackOverFlow 错误。

最终列表更新 = xService.getCountUpdate(couple);

couple 是通过这种方式构建的列表(我文件中的每一行都已完成):

dcIssn = new ArrayList<String>();

dcIssn.add(0, row.getCell(dc).getStringCellValue());
dcIssn.add(1, row.getCell(issn).getStringCellValue());

couple.add(dcIssn);

【问题讨论】:

  • 你是认真的24578条件吗?
  • 等等.. 你的意思是 24578 个连接?是什么让你使用这么多条件..它会极大地影响数据库性能 IMO..
  • 如果你有 24578 个条件,你真的应该重新考虑你的代码并改变它以提高效率。
  • 无论如何,根据数据库的不同,查询中的最大参数量通常应该在 64k 左右,所以这仍然是可行的(虽然效率不高)。无论如何,StackOverflow 听起来不像是数据库出现问题。代码?
  • 这就是我正在尝试的,但这是一个导入功能,我正在尝试处理这个文件,但它可能比这更大,所以我认为我必须在子列表中剪切我的列表改善一点

标签: java sql sql-server


【解决方案1】:

我解决了我的问题。

问题不在于我的查询,而在于我的 StringBuilder 对于查询来说太短了。 谢谢你帮助我=)

【讨论】:

    【解决方案2】:

    搜索条件中可以包含的谓词数量没有限制。有关搜索条件和谓词的更多信息。

    看到这个:- https://technet.microsoft.com/en-us/library/ms189575(v=sql.105).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2011-03-05
      • 2020-11-28
      • 2011-02-27
      • 2019-05-13
      • 1970-01-01
      相关资源
      最近更新 更多