【问题标题】:How to use more than 1000 values in IN condition?如何在 IN 条件下使用超过 1000 个值?
【发布时间】:2013-02-19 22:50:13
【问题描述】:

我正在使用java。我在对象级别有 2000 个键值,并且必须从数据库中获取该值的相应记录。我找到了临时表建议 here,但是不会影响性能吗?如何一次性插入这些值,从而减少数据库调用次数?

【问题讨论】:

  • 临时表是公认的解决方案。为什么您认为它会影响性能?
  • 示例代码和值会很有用。
  • 你可以使用 JOINs 而不是 INs。
  • 如果您知道值的数量将始终为 2000(或大约),那么 Evgeniy Dorofeev 的解决方案将是最快的并且非常容易编码。如果值的数量可以更高,那么临时表会更快。
  • @Daniel 如何在单个数据库命中中插入 2000 行?这就是我的疑问.. 我可以编写一些逻辑并拆分为 1000、1000 条记录并进行批量更新.. 只需要 2 个 DB 命中..

标签: sql oracle in-clause


【解决方案1】:

你可以使用

col1 in (1,2...)  or col1 in (1001, 1002...)

【讨论】:

  • 谢谢 Evgeniy.. 我想我可以编写一些代码逻辑并动态填充它..
【解决方案2】:

我会说临时表是要走的路。会影响性能吗?是的,它可能比硬编码所有值要慢一些。但是你不能拥有一切——如果你不想硬编码所有的值,你将不得不接受性能的小幅下降。我认为权衡是令人满意的,特别是因为影响可能很小。

【讨论】:

    【解决方案3】:

    对于单个 in 子句 - 你不能。见讨论here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-20
      • 2010-09-28
      • 2017-02-13
      • 2013-03-30
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多