1

我有一个查询

SELECT [whatever] FROM [somewhere] WHERE [someValue] IN [value1, valeue2, ..., valueN]

Oracle 10g 数据库中 N(来自上面的 valueN)的最大大小是多少?它可能高达10k或50k吗?

4

4 回答 4

3

如手册中所述,Oracle 对 IN 子句有 1000 个元素的固定限制:

http://docs.oracle.com/cd/E11882_01/server.112/e26088/conditions013.htm#i1050801

您最多可以在 expression_list 中指定 1000 个表达式。

于 2012-07-10T11:30:40.073 回答
3

如果您使用的是INcondition的“表达式列表”版本,尽管您缺少值列表周围的括号,但您的问题似乎就是这种情况,那么您会受到表达式列表本身的限制:

以逗号分隔的表达式列表最多可以包含 1000 个表达式。以逗号分隔的表达式集合列表可以包含任意数量的集合,但每个集合最多可以包含 1000 个表达式。

如果您使用的是子查询版本,那么除了可能的系统资源外,没有限制。

于 2012-07-10T11:32:33.480 回答
2

线程建议限制为 1000。但是,我建议您甚至不要去那里,而是将您的值放在一个表中并将您的查询变成一个子选择。更整洁、更灵活、性能更好。

于 2012-07-10T11:35:18.873 回答
-1

这取决于该特定列的行数。在某些情况下,它可能是您在 table 中拥有的数百万条记录。

于 2012-07-10T11:29:04.753 回答