2012-07-10 35 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

相關問題