4

DB2 中谓词 WHERE IN 的上限是多少。

例如:

从empid in (1,2,3,4...N) 的员工中选择薪水

4

4 回答 4

3

AS/400 限制大约是 1000,基于我们在超过该限制时得到的错误。我们将拆分为多个较小的查询来修补我们的旧版 JEE 应用程序。

于 2016-07-08T16:20:25.467 回答
2

有时,如果你不得不问这个问题,你可能会走错路:-)

如果您担心限制,请考虑将值放入临时表中,然后将这些表连接起来以获取结果。

至于具体的限制,这几乎肯定会根据您使用的 DB2 有所不同:LUW、z/OS、iSeries 等等。它也可能因版本而异。我在网上看到有关 DB2 拒绝超过一千个条目的问题,但至于哪个平台/版本,我不能说。

您最好的选择可能是简单地测试您使用的任何版本,以查看何时达到限制。IBM 通常不倾向于发布这样的限制,而是假设您会做明智的事情并避免太多(尤其是因为优化引擎几乎不可能为任意值选择合适的执行路径)。

于 2014-09-01T06:25:11.153 回答
0

对于 z/OS,IBM 给出了以下限制,但没有关于 IN 子句的规范:

https://www.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/com.ibm.db2z11.doc.sqlref/src/tpc/db2z_limits.dita

于 2016-05-06T11:21:35.490 回答
-1

当达到 in 子句的限制时使用 join 语句。这对所有意图和目的都没有限制。

select salary from employee join mytable on empid = id.
于 2016-07-08T16:51:19.530 回答