2012-07-10 30 views
1

我在Oracle 10g数据库查询可以在WHERE IN的数组中放置多少物品?

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

什么是N的最大尺寸(从上面值N)?它可能高达10k或50k?

+0

Oracle可以根据需要使用TEMP空间(磁盘)(其大小取决于您的DBA如何设置您的环境) – tbone 2012-07-10 11:26:04

+1

1,000。然而,更好的问题是,查询中“OR”条款的数量是多少,我建议这个数字远低于1,000。 – GarethD 2012-07-10 11:34:23

回答

3

如果您使用的IN condition,这似乎是虽然你错过了周围值的列表中的括号从你的问题的情况下“表达式列表”的版本,那么你被限制在expression list本身:

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

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

-1

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

+1

该表中有数千万条记录,但这有什么关系? – m3th0dman 2012-07-10 11:31:43

2

这个thread建议限制为1000.但是,我建议你甚至不要去那里,而是将你的值放在一个表中,并将你的查询变成一个子查询。更整洁,更灵活和更好的性能。

+0

子查询的大小是否有限? – m3th0dman 2012-07-10 11:43:47

+1

不,没有限制。 – DaveRlz 2012-07-10 11:47:34

相关问题